PHP Conference Nagoya 2025

Cómo cambiar los ajustes de configuración

Ejecutar PHP como un módulo de Apache

Cuando se usa PHP como un módulo de Apache, se pueden cambiar los ajustes de configuración usando directivas en los ficheros de configuración de Apache (p.ej. httpd.conf) y en los ficheros .htaccess. Se necesitarán los privilegios "AllowOverride Options" o "AllowOverride All" para poder hacerlo.

Existen varias directivas de Apache que permiten cambiar la configuración de PHP desde los propios ficheros de configuración de Apache. Para un listado las directivas que son INI_ALL, INI_PERDIR, o INI_SYSTEM, consulte el apéndice de la Lista de directivas de php.ini.

php_value nombre valor

Establece el valor de la directiva especificada. Sólo puede usarse con las directivas de tipo INI_ALL y INI_PERDIR. Para borrar un valor previamente establecido, use none como valor.

Nota: No use php_value para establecer valores boolean. Debe usarse en su lugar php_flag (ver más abajo).

php_flag nombre on|off

Usado para establecer una directiva de configuración de tipo boolean. Sólo puede usarse con las directivas de tipo INI_ALL y INI_PERDIR.

php_admin_value nombre valor

Establece el valor de la directiva especificada. Esto no se puede usar en ficheros .htaccess. Ninguna directiva establecida con php_admin_value podrá ser sobrescrita por .htaccess o por ini_set(). Para borrar un valor establecido previamente use none como valor.

php_admin_flag nombre on|off

Usado para establecer una directiva de configuración de tipo boolean. Esto no se puede usar en ficheros .htaccess. Ninguna directiva establecida con php_admin_flag podrá ser sobrescrita por .htaccess o por ini_set().

Ejemplo #1 Ejemplo de configuración de Apache

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>

Precaución

Las constantes de PHP no existen fuera de PHP. Por ejemplo, en httpd.conf no se pueden usar constantes de PHP tales como E_ALL o E_NOTICE para establecer la directiva error_reporting puesto que no tendrán ningún significado y se evaluarán como 0. Use en su lugar la máscara de bits asociada. Estas constantes sí pueden ser usadas en php.ini

Cambiar la configuración de PHP a través del registro de Windows

Cuando se ejecuta PHP en Windows, se pueden modificar los valores de configuración a nivel de directorio usando el registro de Windows. Los valores de configuración se almacenan en la clave de registro HKLM\SOFTWARE\PHP\Per Directory Values, en las subclaves correspondientes a los nombres de ruta. Por ejemplo, los valores de configuración para el directorio c:\inetpub\wwwroot se almacenarían en la clave HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. Los ajustes para el directorio estarán activos para cualquier script dentro de este directorio o en cualquiera de sus subdirectorios. Los valores bajo esta clave deberían tener el nombre de la directiva de configuración de PHP y el valor como string. Las constantes de PHP usadas como valor no serán procesadas. En cualquier caso, únicamente los valores de configuración modificables de INI_USER podrán establecerse con este método, mientras que los valores de INI_PERDIR no.

Otras interfaces a PHP

Independientemente de cómo ejecute PHP, se pueden cambiar determinados valores de los scripts en tiempo de ejecución mediante ini_set(). Consulte la documentación de la página ini_set() para más información.

Si está interesado en una lista completa de los ajustes de configuración en su sistema con sus valores actuales, puede ejecutar la función phpinfo(), y consultar la página mostrada. Puede también acceder a los valores de directivas de configuración concretas usando ini_get() o get_cfg_var().

add a note

User Contributed Notes 2 notes

up
8
contrees.du.reve at gmail dot com
16 years ago
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...
up
0
ohcc at 163 dot com
7 days ago
If a directive has beeen set many times in different places, the precedence is as follows in descending order
php-fpm php_*[foo] = bar
command line argument -d foo=bar
environment variable foo=bar and referenced as ${foo} in php.ini
php.ini foo=bar
To Top