Как определить поддержку .htaccess в PHP на сервере Apache (и других серверах) - PullRequest
3 голосов
/ 20 февраля 2011

Из соображений безопасности мне нужно проверить, не может ли клиент прочитать директорию, т.е. , чтобы сервер Apache поддерживал .htaccess (нет AllowOverride None в файлах конфигурации apache).Это очень важно, так как я недавно обнаружил, что множество продуктов и фреймворков не проверяют это (включая Zend и Symphony).Есть ли способ проверить это, используя только PHP?

Кстати, поправьте меня, если я ошибаюсь, но кажется, что другие серверы (nginx или lighttpd) не поддерживают .htaccess.В таких случаях, как я могу проверить, что мой каталог не читается клиентом?

Ответы [ 3 ]

1 голос
/ 20 февраля 2011

Вы можете проверить файлы по is_readable(".htaccess").

print_r(apache_get_modules()) покажет вам загруженные модули Apache.

1 голос
/ 20 февраля 2011

Может быть, вы можете загрузить файл .htaccess с таким содержанием:

Options -Indexes

в корневой каталог, а затем попытайтесь получить доступ к каталогам, о которых идет речь, если они недоступны, это работает.

Если нет, ваш хост должен легко помочь вам с этим платформа, на которой вы находитесь.

1 голос
/ 20 февраля 2011

Вы можете использовать SetEnvIf в htaccess, чтобы установить переменную, а затем получить доступ к ней из PHP.Это скажет вам, если htaccess используется (и модуль SetEnvIf работает).Но он не скажет вам намного больше - он не скажет, например, доступен ли mod_rewrite.Чтобы узнать, какие модули работают, вы можете программно проверить вывод phpinfo.

...