- ubuntu 12.04
- Apache 2.2.22
- PHP 5.3.10 [ejecutándose como libapache2-mod-fcgid]
[tratando de hacer coincidir un servidor de desarrollo con mi proveedor de alojamiento web]
Logré que fcgi funcionara usando un contenedor y registré los controladores necesarios para analizar los archivos .html como php. Ahora estoy tratando de descubrir por qué mis scripts no se ejecutan con los archivos php.ini en cada directorio, que essegún se informael comportamiento predeterminado.
desde phpinfo(), ejecutando desdehttp://127.0.0.1/NUEVO/poop.html
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/cgi
Loaded Configuration File /var/www/johnny/public_html/php.ini
Scan this dir for additional .ini files /etc/php5/cgi/conf.d
parece estar leyendo la configuración de [/etc/php5/cgi/php.ini] muy bien, y también desde la raíz web, que tuve que definir en el script contenedor para que leyera el php.ini allí.
[/var/www/php-fcgi-scripts/johnny/php-fcgi-starter]
#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html
Reuní dos tutoriales web para hacer funcionar este FastCGI + VirtualHost y he estado aprendiendo poco a poco cómo funciona todo. Aquí está mi configuración de VirtualHost:
[/etc/apache2/sites-available/johnny.conf]
<VirtualHost _default_:80>
ServerName johnny.10.128.0.2.xip.io
ServerAlias my.dev.server.public.IP
DocumentRoot /var/www/johnny/public_html/
<IfModule mod_fcgid.c>
SuexecUserGroup johnny johnny
<Directory /var/www/johnny/public_html/>
Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
AllowOverride All
AddHandler fcgid-script .php .htm .html
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .php
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .htm
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter .html
Order allow,deny
Allow from all
</Directory>
</IfModule>
ErrorLog /var/log/apache2/johnny-error.log
CustomLog /var/log/apache2/johnny-access.log combined
LogLevel warn
ServerSignature Off
</VirtualHost>
pero no cargará nada de [/var/www/johnny/public_html/NEW/php.ini]
revisa este pastbinPara ver todo lo que le hice a este servidor... Tuve que reconfigurar algunas de estas cosas para reflejar la solución de problemas que hice más tarde, así que espero no haberme perdido nada. No he intentado revisar esta lista desde cero (todavía...). Tampoco estoy seguro de si hay líneas importantes para agregar, ya que hoy he estado trabajando durante un tiempo, principalmente editando y luego revirtiendo archivos.
Respuesta1
Creo que lo descubrí.
Comencé de nuevo y recorrí cada línea de mi pastbin, usando solo las partes necesarias para PHP como FastCGI, e investigué exactamente cómo funciona cada pequeña pieza. Luego intenté muchas cosas que fallaron, luego sólo quedó una cosa por intentar, y tal vez esta no sea la "forma correcta", pero...
cree un nuevo <Directory>
bloque /etc/apache2/sites-available/johnny.conf
y copie las directivas, pero con algunos cambios
<Directory /var/www/johnny/public_html/new>
Options +ExecCGI -Indexes +FollowSymLinks +MultiViews
AllowOverride All
AddHandler fcgid-script .php .htm .html
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .php
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .htm
FCGIWrapper /var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new .html
Order allow,deny
Allow from all
</Directory>
luego, cree un script de inicio fcgi separado/var/www/php-fcgi-scripts/johnny/php-fcgi-starter_new
#!/bin/sh
#PHPRC=/var/www/johnny/new
#export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -c /var/www/johnny/public_html/new
Descubrí que eso PHPRC=
no funcionó en este caso, ¡pero el parámetro -c sí! Eso es todo. Es un PITA pero funciona bastante bien para mis propósitos.