php.ini por directorio no se analiza (usando FastCGI)

php.ini por directorio no se analiza (usando FastCGI)
  • 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.confy 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.

información relacionada