Estoy buscando una forma de utilizar un script PHP para controlar el acceso a los recursos en Apache. Quiero tener control de acceso que no dependa del recurso objetivo; es decir, funcionará para html, archivos, otras secuencias de comandos y programas cgi, al igual que las directivas "Permitir desde" o "Denegar desde", excepto mediante el uso de una lógica personalizada.Cómo utilizar el script PHP para el control de acceso en Apache
He mirado en varias maneras de tratar de manejar esto:
- utilizar un módulo de Apache como mod_auth_script (bien, pero este módulo es viejo y supongo que no escala bien) Directiva
- Uso FastCGI FastCgiAccessChecker
- Creo mi propio módulo apache php para invocar y hacer lo que necesito
de éstos # 2 parecía más prometedor, y también más portátil dada la popularidad de FastCG YO. Por lo tanto, logré cambiar el módulo linux php habitual y obtener php trabajando a través de fastcgi en su lugar. Fue más difícil que en Windows, pero tengo que trabajar con el tiempo como un servidor externo, es decir, utilizando directiva de Apache
FastCGIExternalServer /var/www/html/thing -host 192.168.0.11:9000
y comenzando php daemon
php-cgi -q -b 192.168.0.11:9000 &
El problema llegó al tratar de encontrar una forma de invocar un script PHP usando FastCgiAccessChecker.
He intentado varias formas de intentar pasar el nombre del script que quiero ejecutar cambiando el nombre del archivo en las directivas FastCGIExternalServer y/o FastCgiAccessChecker - no funciona. También he intentado iniciar php-cgi con un especificador de la escritura, es decir
php-cgi -q -b 192.168.0.11:9000 -f /var/www/html/thing/access.php &
Nada funciona. Puedo decir que apache reconoce mis directivas, más o menos, porque cuando incluyo FastCgiAccessChecker, visito una página php, el tipo de contenido cambia a text/plain y pierdo los primeros ~ 8000 bytes de contenido de la página servida si es un script (no idea por qué) Pero no llama al script PHP que quiero ejecutar.
Por lo que puedo entender, lo que sucede es que FastCgiAccessChecker asume que el servidor fastcgi especificado se compila específicamente para actuar como un comprobador de acceso. No hay forma de decirle al servidor fastcgi (PHP en mi caso) qué script ejecutar para hacer la verificación de acceso.
He buscado en la web y, por lo que puedo decir, nadie ha intentado antes utilizar un script PHP, o nadie ha escrito al respecto.
Entonces mi pregunta: ¿qué debería estar haciendo? puedo ver algunas posibilidades:
1) Estoy perdiendo algo, y no hay alguna manera mágica para hacer FastCgiAccessChecker hacer lo que quiero: ejecutar un script PHP para controlar el control de acceso de Apache
2) escribo mi propio servidor FastCGI en c e incrustado PHP, así que puedo especificar el script PHP que quiero ejecutar (pasé unos minutos analizando esto; parece complicado y aterrador, y no he trabajado en c desde 1995)
3) Renuncio a FastCGI y escribo un módulo apache para llamar mi script PHP directamente para controlar el acceso. (También se ve complicado, y esta técnica requeriría un nuevo proceso generado por cada solicitud para ejecutar PHP.)
¿Alguien tiene algún consejo, ya sea sobre cómo hacer FastCGI para hacer lo que quiero, o un (razonablemente) alternativa simple a FastCGI?
Gracias por todo lo que puede sugerir
¡Me gusta esa solución! – Achronos