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

search for in the

Referencia del lenguaje> <Configuración del comportamiento de PHP
Last updated: Fri, 22 Aug 2008

view this page in

Como cambiar los valores de la configuración

Ejecución de PHP como un módulo de Apache

Cuando se usa PHP como un módulo de Apache, se pueden cambiar valores de la configuración usando directivas en los archivos de configuración de apache, httpd.conf y .htaccess. Necesitará de los privilegios "AllowOverride Options" o "AllowOverride All" para hacerlo.

Con PHP 4 y PHP 5, hay varias directivas Apache que permiten cambiar la configuración de PHP desde los archivos de configuración de apache. Para obtener una lista de que directivas son del tipo PHP_INI_ALL, PHP_INI_PERDIR, ó PHP_INI_SYSTEM, consultar la lista que se encuentra en la documentación de la función ini_set().

Note: Con PHP 3, existen directivas que corresponden a cada parámetro de configuración en php3.ini, con el prefijo "php3_".

php_value nombre valor

Asigna el valor de la directiva especificada. Puede ser usado solamente con directivas del tipo PHP_INI_ALL y PHP_INI_PERDIR. Para borrar un valor previo, asignar none como valor

Note: No use php_value para definir valores booleanos. Debería usarse php_flag en su lugar (vea más abajo).

php_flag nombre on|off

Usado para asignar una directiva de configuración booleana. Puede ser usado solamente con directivas del tipo PHP_INI_ALL y PHP_INI_PERDIR.

php_admin_value nombre valor

Asigna el valor de la directiva especificada. Esto no puede usarse en archivos .htaccess. Todo tipo de directiva asignada con php_admin_value no puede ser cambiada con .htaccess ó directivas "virtualhost". Para borrar un valor previo, asignar none como valor.

php_admin_flag nombre on|off

Usado para asignar una directiva de configuración booleana. Esto no puede usarse en archivos .htaccess. Todo tipo de directiva asignada con php_admin_flag no puede ser cambiada con .htaccess ó directivas.

Example #1 Ejemplo de configuración de Apache

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

Caution

Las Constantes en PHP no existen fuera de PHP. Por ejemplo, en httpd.conf no se pueden usar constantes PHP tales como E_ALL ó E_NOTICE para definir la directiva error_reporting, ya que no tendrá ningún significado y será evaluada como 0. Usar los valores asociados de "bitmask" en su lugar. Estas constantes pueden ser usadas en php.ini

Modificación de la configuración de PHP usando el registro de Windows

Cuando se usa PHP en Windows, se pueden cambiar los valores de configuración para cada directorio por medio de los registros de Windows. Los valores de configuración se guardan en la llave de registro HKLM\SOFTWARE\PHP\Per Directory Values, en las subllaves correspondientes al PATH. Por ejemplo, los valores de configuracion del directorio c:\inetpub\wwwroot se guardarán en HKLM\SOFTWARE\PHP\Valores Por Directorio\c\inetpub\wwwroot. La configuración de un directorio es válida para todos los scripts ejecutados en el mismo y sus subdirectorios. Los valores en la llave deben de definirse con el nombre de la directiva de configuración de PHP y el valor tipo cadena. Las constantes PHP en los valores no son analizadas.

Otras interfaces con PHP

Independientemente del modo en que ejecute PHP, es posible cambiar ciertos valores en tiempo de ejecución usando ini_set(). Vea la documentación en la página sobre ini_set() para más información.

Si está interesado en una lista completa de parámetros de configuración en su sistema con sus valores actuales, puede ejecutar la función phpinfo(), y revisar la página resultante. También puede acceder a los valores de directivas de configuración individuales en tiempo de ejecución usando ini_get() o get_cfg_var().



add a note add a note User Contributed Notes
Como cambiar los valores de la configuración
contrees.du.reve at gmail dot com
02-Feb-2008 02:25
Being able to put php directives in httpd.conf and have them work on a per-directory or per-vitual host basis is just great. Now there's another aspect which might be worth being aware of:

A php.ini directive put into your apache conf file applies to php when it runs as an apache module (i.e. in a web page), but NOT when it runs as CLI (command-line interface).

Such feature that might be unwanted by an unhappy few, but I guess most will find it useful. As far as I'm concerned, I'm really happy that I can use open_basedir in my httpd.conf file, and it restricts the access of web users and sub-admins  of my domain, but it does NOT restrict my own command-line php scripts...
webmaster at htaccesselite dot com
12-Jul-2007 05:18
To change the configuration for php running as cgi those handy module commands won't work.. The work-around is being able to tell php to start with a custom php.ini file.. configured the way you want.

 With multiple custom php.ini files
-------------------------------------------
/site/ini/1/php.ini
/site/ini/2/php.ini
/site/ini/3/php.ini
--

The trick is creating a wrapper script to set the location of the php.ini file that php will use. Then it exec's the php cgi.

 shell script /cgi-bin/phpini.cgi
-------------------------------------------
#!/bin/sh
export PHPRC=/site/ini/1
exec /cgi-bin/php5.cgi
--

Now all you have to do is setup Apache to run php files through the wrapper script instead of just executing the php cgi.

 In your .htaccess or httpd.conf file
-------------------------------------------
AddHandler php-cgi .php
Action php-cgi /cgi-bin/phpini.cgi
--

So to change the configuration of php you just need to change the PHPRC variable to point to a different directory containing your customized php.ini.. You could also create multiple shell wrapper scripts and create multiple Handler's+Actions in .htaccess..

 in your .htaccess
-------------------------------------------
AddHandler php-cgi1 .php1
Action php-cgi1 /cgi-bin/phpini-1.cgi

AddHandler php-cgi2 .php2
Action php-cgi2 /cgi-bin/phpini-2.cgi

AddHandler php-cgi3 .php3
Action php-cgi3 /cgi-bin/phpini-3.cgi
--

The only caveat here is that it seems like you would have to rename the file extensions, but there are ways around that too ->
http://www.askapache.com/php/custom-phpini-tips-and-tricks.html
Woody/mC
09-Jul-2007 03:09
@ pgl: As the documentation says:

"To clear a previously set value use none as the value."

Works fine for me.
pgl at yoyo dot org
27-Jun-2007 12:59
It is not possible to unset a config option using php_value. This caused me problems with auto_prepend_file settings where I wanted to have a global file auto included, with an exception for only one site. The solution used to be to use auto_prepend_file /dev/null, but this now causes errors, so I just create and include blank.inc now instead.

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