У меня проблемы с определением типа MIME простого файла PNG с fileinfo, с установленным 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 -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
(как указано выше) .
Я пытался обновить PHP.
... и теперь у меня нет выбора.
Если бы кто-нибудь мог помочь мне с этим, я бы послал волны счастья в космос, чтобы он / она могли жить долго и счастливо.
Приветствия