Cuando PHP inicia, lee el fichero de configuración (php.ini). En las versiones en que PHP funciona como módulo de servidor, esto sucede únicamente cuando se arranca el servidor. Para las versiones CGI y CLI, esto ocurre en cada ejecución.
Se trata de encontrar al fichero php.ini en las siguientes localizaciones (en orden):
Localización específica de módulo SAPI (directiva PHPIniDir en Apache 2, opción de línea de comandos-c en CGI y CLI, parámetro php_ini en NSAPI, variable de entorno PHP_INI_PATH en THTTPD)
En la variable de entorno PHPRC. Antes de PHP 5.2.0 esta localización se comprobaba después de la clave de registro descrita más abajo.
A partir de PHP 5.2.0, se puede establecer la localización del fichero php.ini para diferentes versiones de PHP. Se examinan en orden las siguientes claves de registro: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] y [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], donde 'x', 'y' y 'z' identifican la versión mayor, menor y edición de PHP. Si hubiera un valor para IniFilePath en estas claves, entonces la primera en ser encontrada se utilizaría como localización del fichero php.ini (solo en Windows).
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP], valor de IniFilePath (solo en Windows).
Directorio actual de trabajo (excepto CLI)
El directorio del servidor web (para módulos SAPI), o el directorio de PHP (excepto en Windows)
Directorio de Windows (C:\windows o C:\winnt) (para Windows), o --with-config-file-path en tiempo de compilación
Si existiera el fichero php-SAPI.ini (donde SAPI es la SAPI usada, de manera que el nombre de fichero es p.ej. php-cli.ini o php-apache.ini), se usaría éste en lugar de php.ini. Se puede determinar el nombre de la SAPI usando php_sapi_name().
Note:
El servidor web Apache cambia el directorio al raíz al arrancar, haciendo que PHP intente leer php.ini desde la raíz del sistema de ficheros si éste existe.
Las directivas de php.ini manejadas por extensiones están documentadas en la propia página de cada extensión. La lista de directivas del núcleo están disponibles en su apéndice. Es posible que no todas las directivas de PHP estén documentadas en el manual. Para consultar una lista completa de las directivas disponibles en tu versión de PHP, por favor, revise la versión de su fichero php.ini que incluye todos los comentarios. Adicionalmente, puede encontrar útil » el último php.ini del SVN.
Example #1 php.ini ejemplo
; todo texto en una línea tras un punto y coma sin comillas (;) será ignorado [php] ; los marcadores de sección (textos entre corchetes) también se ignoran ; Los valores de tipo Boolean puede establecerse a: ; true, on, yes ; o false, off, no, none register_globals = off track_errors = yes ; puedes encerrar tus strings en comillas dobles include_path = ".:/usr/local/lib/php" ; las barras reciben el mismo tratamiento que el resto de caracteres include_path = ".;c:\php\lib"
A partir de PHP 5.1.0, es posible hacer referencia a variables .ini ya existentes desde el propio fichero .ini. Ejemplo: open_basedir = ${open_basedir} ":/new/dir".