Guía de tecnologías

PHP-FastCGI por sitio: Pruebas y configuración

4 min read DevOps Actualizado 21 Oct 2025
PHP-FastCGI por sitio: pruebas y configuración
PHP-FastCGI por sitio: pruebas y configuración

4 Pruebas

Cree un pequeño archivo PHP en el sitio web, por ejemplo en www.example1.com, y abra ese archivo desde el navegador para verificar que la instalación de FastCGI funciona.

Abra el archivo en el servidor:

vi /srv/www/web1/web/info.php

Inserte el contenido básico de prueba:

Luego acceda desde el navegador: http://www.example1.com/info.php. Si todo está correcto, la salida debe mostrar información de PHP y, en la línea Server API, debe indicar CGI/FastCGI.

Salida de phpinfo mostrando Server API con CGI/FastCGI

Nota importante: elimine o proteja estos archivos info.php en producción. phpinfo() expone detalles sensibles de la configuración.

5 php.ini personalizado por cada sitio

Cada sitio puede tener su propio php.ini porque cada sitio usa su propio script wrapper php-fcgi-starter. Para poner un php.ini específico en www.example2.com, copie el php.ini por defecto al directorio del sitio y ajuste la propiedad:

cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini

Modifique /srv/www/web2/php.ini según sus necesidades.

Edite el wrapper del sitio:

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Dentro del script, establezca PHPRC para que apunte al directorio con el php.ini del sitio:

#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Reinicie Apache después de los cambios:

systemctl restart apache2.service

Cree un info.php para www.example2.com:

vi /srv/www/web2/web/info.php

Visite http://www.example2.com/info.php y confirme que la línea Loaded Configuration File muestre /srv/www/web2/php.ini.

phpinfo mostrando Loaded Configuration File apuntando a /srv/www/web2/php.ini

6 Cambiar una sola directiva de PHP

Si no desea usar un php.ini completo, puede ajustar directivas individuales desde el wrapper añadiendo la opción -d al ejecutable php-cgi. Por ejemplo, para desactivar magic_quotes_gpc en www.example2.com:

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Edite el script así:

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off

Luego reinicie Apache:

systemctl restart apache2.service

Vuelva a cargar http://www.example2.com/info.php y busque la línea magic_quotes_gpc; ahora debería indicar Off.

phpinfo mostrando magic_quotes_gpc Off

Buenas prácticas y seguridad

  • Proteja archivos de prueba como info.php: elimínelos o restrinja el acceso por IP/HTTP_AUTH en producción.
  • Mantenga permisos restrictivos en php.ini por sitio: propietario del sitio y permisos 640 o más restrictivos según el contexto.
  • No añada valores de configuración inseguros en php.ini sin revisar su impacto (por ejemplo, allow_url_fopen, display_errors).
  • Controle el uso de recursos con PHP_FCGI_CHILDREN y PHP_FCGI_MAX_REQUESTS para evitar consumo excesivo de memoria.

Mini-metodología rápida (pasos para aplicar y verificar)

  1. Copie o ajuste php.ini en el directorio del sitio.
  2. Edite el script php-fcgi-starter para exportar PHPRC o añadir -d con la directiva.
  3. Reinicie Apache (systemctl restart apache2.service).
  4. Cree y cargue info.php para verificar Server API y Loaded Configuration File.
  5. Después de comprobar, elimine o restrinja info.php.

Hoja de trucos / Cheat sheet

  • Establecer php.ini por sitio: PHPRC=/ruta/al/directorio/
  • Cambiar una directiva puntual: exec /usr/bin/php-cgi -d nombre_directiva=valor
  • Variables útiles en el wrapper:
    • PHP_FCGI_MAX_REQUESTS (ejemplo: 5000)
    • PHP_FCGI_CHILDREN (ejemplo: 8)
  • Reiniciar Apache: systemctl restart apache2.service

Listas de verificación por rol

Administrador (sistema):

  • Verificar permisos y propiedad del php.ini del sitio.
  • Confirmar que el wrapper exporta PHPRC correcto.
  • Monitorizar procesos php-cgi y consumo de memoria.

Desarrollador (web):

  • Probar la configuración con phpinfo() en entorno de staging.
  • Evitar dejar phpinfo() en producción.
  • Comunicar al equipo los cambios en directivas que puedan afectar la app.

Soporte/Operaciones:

  • Comprobar logs del servidor web y del sistema tras cambios.
  • Validar que no haya errores de inicio en el wrapper.
  • Restaurar el php.ini global si es necesario.

Criterios de comprobación

  • Server API en phpinfo() muestra CGI/FastCGI.
  • Loaded Configuration File apunta al php.ini esperado por sitio.
  • Directivas aplicadas con -d se reflejan en phpinfo().
  • No quedan archivos phpinfo.php accesibles en producción.

Glosario (una línea cada término)

  • PHPRC: variable de entorno que indica el directorio donde PHP busca php.ini.
  • phpinfo(): función PHP que muestra la configuración y entorno de PHP.
  • php-cgi: ejecutable del intérprete PHP en modo CGI/FastCGI.
  • php-fcgi-starter: script wrapper que prepara variables de entorno y arranca php-cgi.

Enlaces útiles

Resumen: configure PHPRC en el wrapper para usar un php.ini por sitio o añada -d a php-cgi para cambiar directivas puntuales. Verifique siempre con phpinfo(), y retire los archivos de prueba de entornos públicos.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach