downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ficheros .user.ini> <Runtime Configuration
[edit] Last updated: Fri, 25 May 2012

view this page in

El fichero de configuración

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 cualquiera de estas claves, 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 en uso, de manera que, por ejemplo, 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().

Nota:

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. Hay una lista de directivas del núcleo disponible en el 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.

Ejemplo #1 Ejemplo de php.ini

; 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".



add a note add a note User Contributed Notes El fichero de configuración
Hayley Watson 08-May-2010 03:53
"Since PHP 5.1.0, it is possible to refer to existing .ini variables from within .ini files."

If you have several configurations that you switch between (say development/testing/staging), or there is some other reason why several settings scattered through the .ini file might need to be changed all together on occasion, then combining this with a custom block can bring all the bits that need changing into one place:

[Customization]
custom.mode = "development"
custom.display_errors = "on"
custom.error_reporting = 30719

[PHP]
;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
....

And then refer to these variables in the rest of the file:

custom.session.save_path = "/tmp/"${custom.mode}

Bringing all the changes into one location in the file is often of immense benefit.

---

Unfortunately, variable names cannot (yet) be nested. Otherwise one could have one .ini file with several customisation blocks, and a single variable to choose which set of variables to use:

[Customization]
custom.mode = "development"

[Customization Development]
custom.development.display_errors = on

[Customization Production]
custom.development.display_errors = off

...

display_errors = ${custom.${custom.mode}.display_errors}
prjorgen at gmail dot com 06-Apr-2009 01:42
Something to note which is not well documented is that when you are specifying the path, it is JUST the path that is needed - not the path and filename. In the registry locations, you need to just put the folder path (e.g. C:\PHP\) and not the full path to the INI file (e.g. C:\PHP\php.ini). This will particularly save you some headaches if you are trying to run multiple versions of PHP on one server!

 
show source | credits | stats | sitemap | contact | advertising | mirror sites