Configurar php.ini por sitio con PHP CGI/FastCGI

4 Pruebas
Ahora creamos un pequeño archivo de prueba PHP, por ejemplo en el sitio web www.example1.com…
vi /srv/www/web1/web/info.php
| |
… y llamamos a ese archivo desde un navegador (http://www.example1.com/info.php). Si todo va bien, la salida debería ser similar a ésta y deberías ver CGI/FastCGI en la línea Server API:
5 php.ini personalizado para cada sitio web
Como cada sitio web tiene su propio script wrapper php-fcgi-starter, es posible definir diferentes php.ini para distintos sitios. Para demostrarlo, copiaremos el php.ini por defecto (/etc/php5/fastcgi/php.ini) al directorio /srv/www/web2/ y haremos que www.example2.com use ese php.ini:
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini
(Puedes ahora modificar /srv/www/web2/php.ini a tu gusto.)
Luego abrimos /srv/www/php-fcgi-scripts/web2/php-fcgi-starter…
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
… y ponemos /srv/www/web2/ en la variable PHPRC:
| #!/bin/sh PHPRC=/srv/www/web2/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-cgi
|
Reinicia Apache después:
/etc/init.d/apache2 restart
Crea un nuevo archivo phpinfo(); para www.example2.com…
vi /srv/www/web2/web/info.php
| |
… y accede desde un navegador (http://www.example2.com/info.php). La línea Loaded Configuration File debería mostrar ahora /srv/www/web2/php.ini:
6 Cambiar configuraciones individuales de PHP
En lugar de pasar un php.ini completo, también puedes cambiar ajustes individuales de PHP en el script wrapper php-fcgi-starter (o combinarlos) usando la opción -d del ejecutable PHP. Por ejemplo, para desactivar magic_quotes_gpc para el sitio www.example2.com, edita:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
| #!/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
|
Reinicia Apache después:
/etc/init.d/apache2 restart
Vuelve a llamar al script info.php en un navegador (http://www.example2.com/info.php) y busca la línea magic_quotes_gpc — ahora debería mostrar Off:
7 Enlaces
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
Recomendaciones rápidas
Important: prueba siempre cambios en un entorno de staging antes de aplicarlos en producción. Guarda copias del php.ini y del script php-fcgi-starter antes de editar.
Notas: las rutas y nombres de usuario (web1, web2) son ejemplos; adáptalos a tu estructura y permisos reales.
Checklist para el administrador
- Crear info.php en el sitio y verificar phpinfo().
- Copiar php.ini personalizado si se necesita un archivo completo por sitio.
- Ajustar PHPRC en php-fcgi-starter y confirmar propietario/permiso del php.ini.
- Reiniciar Apache y comprobar Loaded Configuration File.
- Para ajustes puntuales, usar exec /usr/bin/php-cgi -d clave=valor.
- Registrar cambios en control de versiones o en la documentación interna.
Solución de problemas rápida
- Si no ves CGI/FastCGI en phpinfo(): confirma que el wrapper se está usando y que el VirtualHost ejecuta el script correcto.
- Si Loaded Configuration File apunta a otro php.ini: revisa PHPRC y que el usuario del proceso tenga permisos de lectura.
- Si los cambios con -d no surten efecto: verifica reinicio del servicio y que no exista otra capa (por ejemplo, PHP-FPM) en la ruta.
- Permisos: si PHP no puede leer el php.ini, los ajustes no se aplicarán; usa chown/chmod según tu política.
Alternativas y cuándo usarlas
- PHP-FPM con pools por sitio: más moderno y escalable que wrappers CGI; permite pools con usuarios y php.ini separados por pool.
- .user.ini (para PHP en modo CGI/CGI/FastCGI si está soportado): útil para cambiar valores por directorio, pero con limitaciones de directivas.
- mod_php (PHP como módulo de Apache): no permite php.ini por sitio fácilmente; usar solo si necesitas rendimiento y no procesos por usuario.
Contraejemplo: si tu infraestructura ya usa PHP-FPM, cambiar wrappers de CGI no es la mejor ruta; crea pools de FPM por sitio en su lugar.
Mini metodología (pasos recomendados)
- Crear info.php y comprobar el estado actual.
- Decidir si necesitas un php.ini completo o solo cambiar variables individuales.
- Implementar cambios en /srv/www/
/php.ini o en php-fcgi-starter. - Reiniciar servicio web y validar con phpinfo().
- Documentar y versionar la configuración.
Glosario en una línea
- PHPRC: variable de entorno que indica al ejecutable php-cgi la ruta del php.ini a usar.
- php-fcgi-starter: script wrapper que inicializa variables de entorno y ejecuta php-cgi para un sitio.
- phpinfo(): función PHP que muestra la configuración y variables de entorno.
Resumen final
Puedes gestionar la configuración de PHP por sitio usando scripts wrapper que establecen PHPRC o pasando opciones individuales con -d. Para instalaciones modernas y multisitio con necesidades de aislamiento, considera migrar a PHP-FPM con pools por sitio.
Materiales similares

Guardar enlaces de Tweets para leer más tarde

Cómo minar Dogecoin en tu portátil

Velocidad distinta para trackpad y ratón — AHK y utilidades

Arreglar RE4 Fatal D3D Error 25 — Guía práctica

Probar roles Ansible con Molecule y Docker
