Обнаружение типа Mime не работает с файловым файлом на PHP 5.3.8

У меня возникли проблемы с обнаружением типа 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` 

Конечно, это не идеально, но это вариант.