Мне известна команда UNIX file
для определения типа MIME файла, который я могу выполнить через PHP (например, здесь ):
$content_type = exec("file -bi " . escapeshellarg($filepath));
И яТакже известно о
$fi = new finfo();
echo $fi->file($filename, FILEINFO_MIME_TYPE) . PHP_EOL;
и
echo mime_content_type($filename) . PHP_EOL;
Оба встроенных решения PHP выдают одинаковый вывод.Однако команда Linux file
знает некоторые форматы больше.
Аудиофайлы AMR были зарегистрированы как application/octet-stream
всеми тремя методами.Затем я добавил файл magic в базу данных команды file
:
$ cat /etc/magic
0 string #!AMR\n Adaptive Multi-Rate Audio Codec
!:mime audio/amr
$ file -bi test115.amr
audio/amr; charset=binary
Однако PHP по-прежнему сообщает application/octet-stream
.
Я думал, что PHP-встроен и file
использовать одну и ту же базу данных как-нибудь.Как я могу научить PHP знать MIME-тип файла AMR?