Я пытаюсь понять разницу между file --mime-type
и mimetype
. Они дают мне разные результаты на Ubuntu 12.04.4 LTS для этого простого php-файла.
<?php
echo 'Hello world!';
?>
Теперь, когда я использую mimetype и file для получения типа файла, я получаю:
$ mimetype -b test.php
application/x-php
$ file -b --mime-type test.php
test/x-php
Этот вопрос ( 'file --mime-type' и 'mimetype «Команды, возвращающие разные результаты ), говорят, что file
использует /etc/mime.types
, однако:
$ grep php /etc/mime.types
application/x-httpd-php phtml pht php
application/x-httpd-php-source phps
application/x-httpd-php3 php3
application/x-httpd-php3-preprocessed php3p
application/x-httpd-php4 php4
application/x-httpd-php5 php5
Мне очень любопытно, почему file
видит его как текстовый файл. Это вызывает у меня проблемы в Rails, так как MIME-тип Ruby также видит его как приложение типа.
Согласно странице справочника file
не использует /etc/mime.types
но скомпилированные определения от /usr/share/misc/magic.mgc
, определения простого текста от /etc/magic
и некоторые другие файлы.
Можно получить исходный код для /usr/share/misc/magic.mgc
от исходного кода file
пакет (взглянули в magic/
подпапка).
Если Вы хотите file
возвратиться application/x-php
добавьте следующее к /etc/magic
:
# PHP scripts
# Ulf Harnhammar <ulfh@update.uu.se>
0 search/1/c =<?php PHP script text
!:mime application/x-php
0 search/1 =<?\n PHP script text
!:mime application/x-php
0 search/1 =<?\r PHP script text
!:mime application/x-php
0 search/1/w #!\ /usr/local/bin/php PHP script text executable
!:mime application/x-php
0 search/1/w #!\ /usr/bin/php PHP script text executable
!:mime application/x-php
# Smarty compiled template, http://www.smarty.net/
# Elan Ruusamäe <glen@delfi.ee>
0 string =<?php\ /*\ Smarty\ version Smarty compiled template
>24 regex [0-9.]+ \b, version %s
!:mime application/x-php