У меня возникли проблемы с обнаружением типа mime простого файла PNG с файловым файлом с PHP 5.3.8, установленным на сервере CentOS.
Проблема
В принципе, если у меня есть следующий код:
<?php $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; $handle = finfo_open($const, '/usr/share/file/magic.mime'); $result = finfo_file($handle, '/var/vhosts/v4dev/public/Melvin.png'); echo $result; unset($handle); ?>
Как вы можете видеть, файл является PNG-изображением. Байт заголовка файла проверен и правилен. Но эта страница выводит неверный результат:
application/octet-stream
Я думаю, это связано с тем, что тип файла не был обнаружен, а fileinfo возвратил ответ по умолчанию, но я не нашел способа проверить это.
Что я пробовал
Чтобы проверить правильность файла magic.mime, я использовал команду file console:
file -m /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png
Что вернуло ожидаемый результат:
/var/vhosts/v4dev/public/Melvin.png: image/png
Я также попробовал еще один файл magic.mime, поставляемый с Apache, но проблема остается.
Я попытался указать файл magic.mime через местоположение по умолчанию fileinfo (с символической ссылкой и копией файла), с переменной среды MAGIC
и указав путь к finfo_open
вызове finfo_open
(как указано выше).
Я пробовал обновлять PHP.
… и теперь у меня нет вариантов.
Если бы кто-нибудь мог мне помочь в этом, я бы послал волны счастья в космос, чтобы он / она мог жить счастливо.
ура
Так почему бы не вызвать команду file
из вашего скрипта?
$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png`
Конечно, это не идеально, но это вариант.