2009-09-08 18 views
23

¿Cómo incluyo un archivo php.ini en otro archivo php.ini?¿Cómo incluyo un archivo php.ini en otro archivo php.ini?

+2

Me interesa saber cómo RHEL/Fedora logra el /etc/php.d/* incluir. ¿Parchearon PHP para que esto sea posible? – gahooa

+0

@gahooa esa es la pregunta que me dirigía aquí. ¿Alguna vez aprendiste cómo logran incluir /etc/php.d/*? –

+1

ver la respuesta aceptada a continuación, esto responde a su pregunta también. U también puede hacer php -i (phpinfo()) y ver cómo se construyó el php –

Respuesta

17

No creo que pueda "incluir" archivos .ini desde el archivo php.ini principal.

Una posible solución, sin embargo, podría ser el uso de esta opción en la línea de configuración, al compilar PHP:

--with-config-file-scan-dir=PATH               
    Set the path where to scan for configuration files 

Si se utiliza esta opción en tiempo de compilación, PHP buscará todos los archivos .ini en este directorio, además del archivo php.ini "normal".

Supongo que esto es lo que utiliza Ubuntu, por ejemplo, que utiliza un archivo .ini diferente para cada extensión descargada, en lugar de modificar php.ini.

La ruta de acceso al archivo php.ini que se define con esta opción, en la línea de configure:

--with-config-file-path=PATH                
    Set the path in which to look for php.ini [PREFIX/lib] 

Aún así, es probable que significa que tendrá que volver a compilar PHP - que no es tan Difícil, por cierto, la parte más difícil es obtener las dependencias que necesita.

Y, aquí es un mensaje en la parte interna @ mailling-lista que dice lo mismo que yo: config files and PHP_CONFIG_FILE_SCAN_DIR

+0

Además de la configuración del tiempo de compilación, también hay una variable de entorno 'PHPRC' que hace posible cambiar el directorio predeterminado' php.ini' (y otros archivos ini) predeterminados. –

+0

Cuando dices en la línea de configuración, ¿qué significa eso? ¿Es eso un archivo en alguna parte? – tomjung

1

No puede. Lea las páginas en línea:

The configuration file

Resumen: El archivo de configuración (php.ini) es leído cuando arranca PHP. Para las versiones de módulo de servidor de PHP, , esto ocurre una sola vez cuando se inicia el servidor web . Para la versión CGI y CLI , ocurre en cada invocación .

.user.ini files

Resumen: Además del archivo principal php.ini, las exploraciones de PHP para archivos INI en cada directorio, empezando por el directorio del archivo PHP solicitado, y trabajando su camino hasta la raíz del documento actual (como se establece en $ _SERVER ['BROCH_DOCUMENTOS']). Solo las configuraciones INI con los modos PHP_INI_PERDIR y PHP_INI_USER se reconocerán en los archivos INI .user.ini-style.

+3

Lo leo antes de publicarlo, no dice nada acerca de si es posible o no. –

0

Se podría tratar de simular que haciendo uso de la función ini_set. Pero como indica la "página de manual", no todas las opciones de ini se pueden cambiar usando ini_set. Sin embargo, definitivamente es una función útil.

7

Instalé memcached para php y no estaba seguro de cómo asegurarme de que su ini estaba incluido en mi php.ini, pero resultó ser que automáticamente lo es. Puede validar lo que se está cargando ejecutando php --ini.

php --ini 
Configuration File (php.ini) Path: /opt/local/etc/php5 
Loaded Configuration File:   (none) 
Scan for additional .ini files in: /opt/local/var/db/php5 
Additional .ini files parsed:  /opt/local/var/db/php5/memcached.ini 
+0

suena como la ruta de archivo de configuración devuelta por "php --ini" tal vez no sea la misma que la devuelta desde la página web (). – gonglong

4

también se puede definir la ruta en el ~/.bashrc

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d 
1

Parece que no se puede incluir un archivo ini a otro por lo que se hace referencia y se carga. Pero puede configurar php para cargar varios archivos diciéndole qué carpetas buscar.

Al utilizar una configuración de FastCGI (posiblemente también en FPM, aunque no lo sé con certeza), puede exportar variables de entorno desde el contenedor php.

No se podía hacer:

export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc 

/var/www/mydomain.net/etc es sólo un ejemplo, que es la carpeta donde poner los archivos ini adicionales en. Parece que esta puede ser una lista separada de :.

Usar un (archivo llamado arbitrariamente que contiene solamente <? phpinfo();) phpinfo.php, abra la dirección URL correspondiente en su navegador y compruebe la lista de directorios que se analizan y la lista de archivos que se cargan en la zona superior de la misma.

/etc/php5/cgi/conf.d siempre se debe incluir (supongo que porque se compiló en el ejecutable php) y, posiblemente, realmente no sea necesario.

Cuestiones relacionadas