Como cambiar los valores de la configuración

Ejecutando PHP como 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 ficheros de configuración de apache, httpd.conf y .htaccess (Se necesitan privilegios "AllowOverride Options" ó "AllowOverride All")

Con PHP 4.0, hay varias directivas Apache que permiten cambiar la configuracion de PHP desde los ficheros 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().

Nota: Con PHP 3.0, existen directivas que corresponden a cada parametro 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

Nota: No usar php_value para definir valores booleanos. Deveria 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. NO puede usarse en ficheros .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. NO puede usarse en ficheros .htaccess. Todo tipo de directiva asignada con php_admin_flag no puede ser cambiada con .htaccess ó directivas.

Ejemplo 4-2. Ejemplo de configuración de apache

<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>

Atención

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

Cambiando la configuracion de PHP via registros en Windows

Cuando se usa PHP en Windows, se pueden cambiar los valores de configuracion por medio de los registros de Windows. Los valores de configuracion 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 guardaran en HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. La configuracion de un directorio es valida 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 configuracion de PHP y el valor correspondiente. Las constantes PHP en el valor no son analizadas.

Otros interfaces de PHP

Dependiendo del interfaz de PHP se pueden cambiar ciertos valores en tiempo de ejecución con la función ini_set(). La siguiente tabla describe en que nivel una directiva puede ser definida/cambiada.

Tabla 4-1. Definición de constantes PHP_INI_*

ConstanteValorSignificado
PHP_INI_USER1Puede ser definida en scripts de usuario
PHP_INI_PERDIR2 Puede ser definida en php.ini, .htaccess ó httpd.conf
PHP_INI_SYSTEM4 Puede ser definida en php.ini ó httpd.conf
PHP_INI_ALL7Puede ser definida en cualquier sitio

Se pueden ver las definiciones de los valores de configuración en la salida de phpinfo(). Los valores individuales de configuración de directivas pueden ser accedidos con ini_get() ó get_cfg_var().