Обнаружение MIME-типа не выполняется с fileinfo на PHP 5.3.8 - PullRequest
5 голосов
/ 24 октября 2011

У меня проблемы с определением типа 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.

... и теперь у меня нет выбора.


Если бы кто-нибудь мог помочь мне с этим, я бы послал волны счастья в космос, чтобы он / она могли жить долго и счастливо.

Приветствия

1 Ответ

1 голос
/ 24 октября 2011

Так почему бы не вызвать команду file из вашего скрипта?

$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png`

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

...