Как определить тип MIME, установленный htaccess в PHP - PullRequest
0 голосов
/ 03 мая 2010

У меня есть файл .htaccess, настроенный для определения определенных типов MIME в каталоге root / a / b /, и все файлы находятся в одном каталоге.

У меня есть php-файл, который хочет обслуживать эти файлы в каталоге root / c /, и мне нужно определить тип содержимого, определенный в файле .htaccess.

Есть ли способ сделать это? Версия PHP 5.1.6. mime_content_type возвращает text/plain, и я бы предпочел не пытаться анализировать файл .htaccess вручную. Я могу переместить файл, если это необходимо.

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Если вы хотите обслуживать файлы с помощью php, почему бы вам не определить типы mime с помощью php (например, как ассоциативный массив с расширением => пары типов mime)?

при этом возможный способ достичь этого без анализа файла .htaccess - позволить php-скрипту выполнить запрос для файла в root/a/b и проверить тип mime в заголовках ответа. если вы обслуживаете файлы с помощью HTTP-оболочки , например. fopen('http://example.com/a/b/file'), вы получаете это автоматически: вы можете получить доступ к заголовкам ответа через $http_response_header или stream_get_meta_data - тип mime находится в заголовке Content-Type:. если вы откроете файл другим способом, вы все равно сможете сначала выполнить запрос HEAD и проверить тип содержимого ответа (хотя выполнение 2 запросов для каждого обслуживаемого файла кажется излишним).

1 голос
/ 03 мая 2010

Вы имеете в виду, что хотите обслужить некоторые статические файлы через php-скрипт и вернуть их с тем же типом контента, как если бы они обслуживались напрямую (статически) сервером apache?

Я не думаю, что вы можете сделать это прямо, без чтения файла .htaccess. И даже это может быть небезопасно, поскольку файл .htaccess просто переопределяет глобальные параметры конфигурации Apache или даже некоторых других файлов .htaccess в некотором родительском каталоге.

Единственный надежный способ, который я могу себе представить, это ваш собственный php-скрипт, устанавливающий http-соединение для получения (статически) файла и получения типа контента, но это может оказаться непрактичным для вашего сценария (и будьте осторожны с бесконечными циклами) !).

...