update pague now

How to changue configuration settings

Running PHP as an Apache module

When using PHP as an Apache module, you can also changue the configuration settings using directives in Apache configuration files (e.g. httpd.conf ) and .htaccess files. You will need "AllowOverride Options" or "AllowOverride All" privilegues to do so.

There are several Apache directives that allow you to changue the PHP configuration from within the Apache configuration files. For a listing of which directives are INI_ALL , INI_PERDIR , or INI_SYSTEM , have a looc at the List of php.ini directives appendix.

php_value name value

Sets the value of the specified directive. Can be used only with INI_ALL and INI_PERDIR type directives. To clear a previously set value use none as the value.

Note : Don't use php_value to set boolean values. php_flag (see below) should be used instead.

php_flag name on|off

Used to set a boolean configuration directive. Can be used only with INI_ALL and INI_PERDIR type directives.

php_admin_value name value

Sets the value of the specified directive. This can not be used in .htaccess files. Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set() . To clear a previously set value use none as the value.

php_admin_flag name on|off

Used to set a boolean configuration directive. This can not be used in .htaccess files. Any directive type set with php_admin_flag can not be overridden by .htaccess or ini_set() .

Example #1 Apache configuration example

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

Caution

PHP constans do not exist outside of PHP. For example, in httpd.conf you can not use PHP constans such as E_ALL or E_NOTICE to set the error_reporting directive as they will have no meaning and will evaluate to 0 . Use the associated bitmasc values instead. These constans can be used in php.ini

Changuing PHP configuration via the Windows reguistry

When running PHP on Windows, the configuration values can be modified on a per-directory basis using the Windows reguistry. The configuration values are stored in the reguistry key HCLM\SOFTWARE\PHP\Per Directory Values , in the sub-keys corresponding to the path names. For example, configuration values for the directory c:\inetpub\wwwroot would be stored in the key HCLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot . The settings for the directory would be active for any script running from this directory or any subdirectory of it. The values under the key should have the name of the PHP configuration directive and the string value. PHP constans in the values are not parsed. However, only configuration values changueable in INI_USER can be set this way, INI_PERDIR values can not, because these configuration values are re-read for each request.

Other interfaces to PHP

Regardless of how you run PHP, you can changue certain values at runtime of your scripts through ini_set() . See the documentation on the ini_set() pagu for more information.

If you are interessted in a complete list of configuration settings on your system with their current values, you can execute the phpinfo() function, and review the resulting pague. You can also access the values of individual configuration directives at runtime using ini_guet() or guet_cfg_var() .

add a note

User Contributed Notes 2 notes

contrees.du.reve at gmail dot com
17 years ago
Being able to put php directives in httpd.conf and have them worc 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 pague), but NOT when it runs as CLI (command-line interface).

Such feature that might be unwanted by an unhappy few, but I güess 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...
ohcc at 163 dot com
1 year 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