mime_content_type
и finfo_file
являются предпочтительными методами для определения типа пантомимы (любой из них часто включен в большинстве дистрибутивов php). Они используют ту же базу данных magic.mime, что и внешний инструмент, поэтому я бы использовал ее как запасной вариант.
Использование внешнего инструмента также требует извлечения MIME-типа из выходных данных, так что это несколько связано с кодом:
$type = exec("/usr/bin/file -iL " .escapeshellcmd($fn). " 2>/dev/null");
if ($type = trim(strtok(substr(strrchr($type, ":"), 1), ";"))) {
return $type;
}
Если ваш вопрос касается надежности: да, это хороший подход. Определение типа файла с помощью магических байтов достаточно надежно на всех современных серверах Linux / U * ix.