Привет,
Работя върху web приложение за качване на файлове с PHP.
Искам да разбера какъв е mime-type на файла, който се качва. Когато използвам PHP finfo получавам "application/octet-stream; charset=binary"
$finfo = finfo_open(FILEINFO_MIME);
echo finfo_file($finfo,"File.odt");
finfo_close($finfo);
в същото време, ако използвам filе се получава "application/vnd.oasis.opendocument.text; charset=binary"
Поразрових се да видя дали finfo и file ползват една и съща база с mime types. Файлът в Дебиан е "/usr/share/file/magic.mgc" (има няколко симлинка към него). Ако го използвам изрично с file, няма проблем - резултатът е същия:
file -i -m /usr/share/file/magic.mgc File.odt
Ако обаче дам същият файл на finfo_open, нещата не са ОК:
$finfo = finfo_open(FILEINFO_MIME, "/usr/share/file/magic.mgc");
echo finfo_file($finfo,"File.odt");
finfo_close($finfo);
Горното гърми с:
PHP Notice: finfo_open(): Warning: offset `-' invalid in /home/senser/Desktop/CustomerFiles_Tests/finfo.php on line 4
PHP Notice: finfo_open(): Warning: type `-' invalid in /home/senser/Desktop/CustomerFiles_Tests/finfo.php on line 4
PHP Notice: finfo_open(): Warning: offset `.' invalid in /home/senser/Desktop/CustomerFiles_Tests/finfo.php on line 4
PHP Notice: finfo_open(): Warning: type `.' invalid in /home/senser/Desktop/CustomerFiles_Tests/finfo.php on line 4
PHP Warning: finfo_open(): Failed to load magic database at '/usr/share/file/magic.mgc'. in /home/senser/Desktop/CustomerFiles_Tests/finfo.php on line 4
В същото време finfo с параметър празната директория "/usr/share/misc/magic", не гърми:
$finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic");
вади същия резултат "application/octet-stream; charset=binary".
И последно ако извикам file без да тества с magic files (от man file: soft Consults magic files):
file -i --exclude soft File.odt
имам "application/octet-stream; charset=binary"
Всичко това ме навежда на мисълта, че finfo на PHP не (може да) ползва същата mime types база.
Не намирам в същото време кой файл ползва вътрешно. Това, което намирам на сайта на РНР (
http://bg2.php.net/manual/en/fileinfo.installation.php) е това:
The libmagic library is bundled with PHP, but includes PHP specific changes. A patch against libmagic named libmagic.patch is maintained and may be found within the PHP fileinfo extensions source.
Ето какво имам от phpinfo():
fileinfo
fileinfo support enabled
version 1.0.5
libmagic 517