Я ищу способ использовать PHP-скрипт для управления доступом к ресурсам в Apache. Я хочу иметь управление доступом, не зависящее от целевого ресурса; т.е. он будет работать для html, файлов, других скриптов и программ cgi, так же как директива «Разрешить от» или «Запретить от» - за исключением использования специальной логики.
Я рассмотрел несколько способов попытаться управлять этим:
Из них 2 выглядели наиболее многообещающими, а также наиболее портативными, учитывая популярность FastCGI. Итак, мне удалось заменить обычный модуль php linux и вместо этого заставить php работать через fastcgi. Это было сложнее, чем в Windows, но со временем он заработал как внешний сервер, то есть с помощью директивы Apache
FastCGIExternalServer / var / www / html / thing -host 192.168.0.11:9000
и запуска демона php
php-cgi -q -b 192.168.0.11:9000 &
Проблема возникла при попытке найти способ вызвать PHP-скрипт с помощью FastCgiAccessChecker.
Я пробовал различными способами попытаться передать имя скрипта Я хочу запустить, изменив имя файла в директивах FastCGIExternalServer и / или FastCgiAccessChecker - не работает. Я также пробовал запускать php-cgi со спецификатором скрипта, т.е.
php-cgi -q -b 192.168.0.11:9000 -f /var/www/html/thing/access.php &
Ничего не работает . Я могу сказать, что apache распознает мои директивы, вроде того, потому что, когда я включаю FastCgiAccessChecker, затем посещаю страницу php, тип содержимого изменяется на text / plain, и я теряю первые ~ 8000 байтов содержимого с обслуживаемой страницы, если это сценарий (нет идея почему). Но он не вызывает сценарий PHP, который я хочу запустить.
Насколько я могу понять, происходит то, что FastCgiAccessChecker предполагает, что указанный сервер fastcgi скомпилирован специально для работы в качестве средства проверки доступа. Невозможно указать серверу fastcgi (в моем случае PHP), какой скрипт запускать для проверки доступа.
Я искал в Интернете и, насколько я могу судить, никто никогда не пытался использовать PHP сценарий для этого раньше, или никто об этом не писал.
Итак, мой вопрос: что мне делать? Я вижу несколько возможностей:
1) Мне чего-то не хватает, и есть какой-то волшебный способ заставить FastCgiAccessChecker делать то, что я хочу: запустить скрипт PHP для управления контролем доступа apache
2) Я пишу свой собственный FastCGI сервер в c и встроить PHP, чтобы я мог указать сценарий PHP, который хочу запустить (я потратил несколько минут на изучение этого; он выглядит сложным и пугающим, и я не работал в c с 1995 года)
3 Я отказываюсь от FastCGI и пишу модуль apache для прямого вызова моего PHP-скрипта для управления доступом. (Также выглядит сложным; и этот метод потребовал бы создания нового процесса для каждого запроса на выполнение PHP.)
Есть ли у кого-нибудь совет, как заставить FastCGI делать то, что я хочу, или (разумно) простая альтернатива FastCGI?
Спасибо за все, что вы можете предложить