PHP Manual
Prev |  | Next

# Chapter 9. Runtime Configuration

# The configuration file

The configuration file (called `php3.ini` in PHP 3, and simply `php.ini` as of PHP 4) is read when PHP starts up. For the server module versions of PHP, this happens only once when the web server is started. For the CGI and CLI version, it happens on every invocation.

`php.ini` is searched in these locations (in order):

- SAPI module specific location (PHPIniDir directive in Apache 2, -c command line option in CGI and CLI, php_ini parameter in NSAPI, PHP_INI_PATH environment variable in THTTPD)

- The PHPRC environment variable. Before PHP 5.2.0 this was checked after the registry key mentioned below.

- HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry location)

- Current working directory (for CLI)

- The web server's directory (for SAPI modules), or directory of PHP (otherwise in Windows)

- Windows directory (`C:\windows` or `C:\winnt`) (for Windows), or --with-config-file-path compile time option

If `php-SAPI.ini` exists (where SAPI is used SAPI, so the filename is e.g. `php-cli.ini` or `php-apache.ini`), it's used instead of `php.ini`. SAPI name can be determined by php_sapi_name().

> Note: The Apache web server changes the directory to root at startup causing PHP to attempt to read `php.ini` from the root filesystem if it exists.

The `php.ini` directives handled by extensions are documented respectively on the pages of the extensions themselves. The list of the core directives is available in the appendix. Probably not all PHP directives are documented in the manual though. For a complete list of directives available in your PHP version, please read your well commented `php.ini` file. Alternatively, you may find the the latest `php.ini` from CVS helpful too.

Example 9-1. `php.ini` example

    ; any text on a line after an unquoted semicolon (;) is ignored
    [php] ; section markers (text within square brackets) are also ignored
    ; Boolean values can be set to either:
    ;    true, on, yes
    ; or false, off, no, none
    register_globals = off
    track_errors = yes

    ; you can enclose strings in double-quotes
    include_path = ".:/usr/local/lib/php"

    ; backslashes are treated the same as any other character
    include_path = ".;c:\php\lib"

Since PHP 5.1.0, it is possible to refer to existing .ini variables from within .ini files. Example: open_basedir = ${open_basedir} ":/new/dir".

Prev | Home | Next
Bug reports | Up | How to change configuration settings