PHP'nin FILEINFO_MIME seçeneği boş bir dize döndürür

3 Cevap php

Benim PHP uygulamalarında Yüklenen bir dosyanın MIME türünü kontrol etmek için çalışıyorum. Ben dosyası yüklemek, sonra bunu yapmak, nereye $ dosya benim dosyanın yolu:

$finfo = new finfo(FILEINFO_MIME);
$mimetype = $finfo->file($file);

Bu durumda, $ mimetype her zaman boş bir dizedir. Ben çeşitli dosya türleri (. Jpg,. Doc,. Txt,. Pdf) üzerinde test ettik ve her zaman boş. Bu "image / jpeg" gibi bir şey dönmek gerekiyordu.

Ben hata ayıklama ve kod parçacığını şimdi bu böylece ilk satırı değiştirildi:

$finfo = new finfo(FILEINFO_NONE);
$info = $finfo->file($file);

JPEG görüntü verileri, JFIF standart 1.02: Ben bir jpg yükledi Bu durumda, $ bilgi bu oldu. Yani şimdi ben doğru dosyaya gidiyor biliyorum, ama FILEINFO_MIME geçerken bana doğru mim dize geri vermez.

Bu sadece benim hazırlama sunucusunda olur. Benim yerel sunucuda, ben doğru MIME türü olsun. Herkes benim evreleme sunucu mime türü için boş bir dize döndürür neden herhangi bir fikir var mı?

3 Cevap

Magic file doğru sunucusuna yerleştirilmiş merak ediyorum.

magic_file
Name of a magic database file, usually something like /path/to/magic.mime. If not specified, the MAGIC environment variable is used. If this variable is not set either, /usr/share/misc/magic is used by default. A .mime and/or .mgc suffix is added if needed.

Eğer son argüman Via kendi dosyası belirtebilirsiniz yana

$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");

Bu deneyin:

<?php
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic');
$mime_type = $fi->buffer(file_get_contents($file));
?>

Eğer örnek denemek mi from the manual:

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension

   echo finfo_file($finfo, $filename) . "\n";

finfo_close($finfo);
?>