我正在寻找一种方法来使用
PHP脚本来控制对Apache资源的访问.我想要具有不依赖于目标资源的访问控制;即它将适用于html,files,其他脚本和cgi程序,就像“允许”或“拒绝”指令一样 – 除了使用自定义逻辑.
我已经看了几种方法来尝试管理这个:
>使用像mod_auth_script这样的apache模块(好的,但是这个模块是旧的,我假设不能很好地扩展)
>使用FastCGI指令FastCgiAccessChecker
>创建我自己的apache模块来调用php并做任何我需要的
其中#2看起来最有希望,也是最受欢迎的FastCGI.
所以,我设法换掉通常的linux php模块,并通过fastcgi来获取PHP的工作.它比在Windows上更难,但最终将其作为外部服务器,即使用Apache指令
FastCGIExternalServer / var / www / html / thing -host 192.168.0.11:9000
并启动php守护进程
php-cgi -q -b 192.168.0.11:9000&
麻烦的是试图找到一种使用FastCgiAccessChecker调用PHP脚本的方法.
我尝试过各种方法尝试通过更改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)我在c中编写自己的FastCGI服务器并嵌入PHP,所以我可以指定我要运行的PHP脚本(我花了几分钟时间查看这个;它看起来很复杂,可怕,我没有在c自1995年以来)
3)我放弃了FastCGI,并编写了一个apache模块来直接调用PHP脚本来控制访问. (也看起来很复杂;这种技术将需要为执行PHP的每个请求产生一个新的进程.)
有没有人有任何建议,无论是如何让FastCGI做我想要的,或一个(合理)简单的替代FastCGI?
感谢您提出的任何建议