Обнаружение типа MIME в PHP

Я ищу лучшее (возможно, на большинстве PHP 5.2 и все еще активно развивается) способ обнаружения файлов MIME-типа в PHP.

Я знаю метод mime_content_type() и расширение Fileinfo, однако mime_content_type() ненадежен и устарел, а Fileinfo не входит в стандартную установку PHP (5.2).

Есть ли у меня другие варианты?

Вы заглянули в этот пакет PEAR?

http://pear.php.net/package/MIME_Type

(LOL жаль, что я понял, что это было спрошено несколько месяцев назад, когда я заканчивал … ну, может, также добавить это …)

Если это * nix-сервер, вы можете использовать команду file .

 file -bi <filepath> 

Вы должны использовать «exec» в PHP, чтобы сделать это, я думаю? Я новичок в PHP, поэтому не цитируйте меня на этом, но …

 $content_type = exec("file -bi " . escapeshellarg($filepath)); 

Я не тестировал его, поэтому вам может понадобиться избежать строки пути и форматировать вывод.

Dunno, если это будет более надежным, чем другие методы.

Вы можете сделать subrequest на веб-сервер, на котором вы работаете, затем проанализировать заголовок, чтобы получить тип mime таким образом. Поскольку это происходит медленно, используйте завиток, чтобы получить заголовки, а не полный запрос. Это важно, если вы смотрите на большие файлы.

Если вы используете Apache и используете php в качестве модуля, посмотрите на функцию VIRTUAL. это более быстрый способ сделать подзапрос, чем использование curl.

В противном случае вы можете искать тип mime по расширению. Это заставит все хорошо названные файлы работать.