PHP Manual
Prev |  | Next

# Chapter 3. Configuration

# The configuration file

The configuration file (called `php3.ini` in PHP 3.0, and simply `php.ini` as of PHP 4.0) 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 version, it happens on every invocation.

When using PHP as an Apache module, you can also change the configuration settings using directives in Apache configuration files and .htaccess files.

With PHP 3.0, there are Apache directives that correspond to each configuration setting in the `php3.ini` name, except the name is prefixed by "php3_".

With PHP 4.0, there are just a few Apache directives that allow you to change the PHP configuration settings.

php_value `name` `value`

  This sets the value of the specified variable.

php_flag `name` `on|off`

  This is used to set a Boolean configuration option.

php_admin_value `name` `value`

  This sets the value of the specified variable. "Admin" configuration settings can only be set from within the main Apache configuration files, and not from .htaccess files.

php_admin_flag `name` `on|off`

  This is used to set a Boolean configuration option.

You can view the settings of the configuration values in the output of phpinfo(). You can also access the values of individial configuration settings using get_cfg_var().

## General Configuration Directives

`asp_tags` boolean

  Enables the use of ASP-like <% %> tags in addition to the usual <?php ?> tags. This includes the variable-value printing shorthand of <%= $value %>. For more information, see Escaping from HTML.

  > Note: Support for ASP-style tags was added in 3.0.4.

`auto_append_file` string

  Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the include() function, so include_path is used.

  The special value none disables auto-appending.

  > Note: If the script is terminated with exit(), auto-append will not occur.

`auto_prepend_file` string

  Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the include() function, so include_path is used.

  The special value none disables auto-prepending.

`cgi_ext` string

`display_errors` boolean

  This determines whether errors should be printed to the screen as part of the HTML output or not.

`doc_root` string

  PHP's "root directory" on the server. Only used if non-empty. If PHP is configured with safe mode, no files outside this directory are served.

`engine` boolean

  This directive is really only useful in the Apache module version of PHP. It is used by sites that would like to turn PHP parsing on and off on a per-directory or per-virtual server basis. By putting `php3_engine off` in the appropriate places in the `httpd.conf` file, PHP can be enabled or disabled.

`error_log` string

  Name of file where script errors should be logged. If the special value `syslog` is used, the errors are sent to the system logger instead. On UNIX, this means syslog(3) and on Windows NT it means the event log. The system logger is not supported on Windows 95.

`error_reporting` integer

  Set the error reporting level. The parameter is an integer representing a bit field. Add the values of the error reporting levels you want.

  Table 3-1. Error Reporting Levels

  bit value | enabled reporting
  --- | ---
  1 | normal errors
  2 | normal warnings
  4 | parser errors
  8 | non-critical style-related warnings

  The default value for this directive is 7 (normal errors, normal warnings and parser errors are shown).
`open_basedir` string

  Limit the files that can be opened by PHP to the specified directory-tree.

  When a script tries to open a file with, for example, fopen or gzopen, the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to open it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink.

  The special value . indicates that the directory in which the script is stored will be used as base-directory.

  Under Windows, separate the directories with a semicolon. On all other systems, separate the directories with a colon. As an Apache module, open_basedir paths from parent directories are now automatically inherited.

  > Note: Support for multiple directories was added in 3.0.7.

  The default is to allow all files to be opened.

`gpc_order` string

  Set the order of GET/POST/COOKIE variable parsing. The default setting of this directive is "GPC". Setting this to "GP", for example, will cause PHP to completely ignore cookies and to overwrite any GET method variables with POST-method variables of the same name.

`ignore_user_abort` string

  On by default. If changed to Off scripts will be terminated as soon as they try to output something after a client has aborted their connection. ignore_user_abort().

`include_path` string

  Specifies a list of directories where the require(), include() and fopen_with_path() functions look for files. The format is like the system's `PATH` environment variable: a list of directories separated with a colon in UNIX or semicolon in Windows.

  Example 3-1. UNIX include_path
        1
        2 include_path=.:/home/httpd/php-lib
        3

  Example 3-2. Windows include_path
        1
        2 include_path=".;c:\www\phplib"
        3

  The default value for this directive is `.` (only the current directory).
`isapi_ext` string

`log_errors` boolean

  Tells whether script error messages should be logged to the server's error log. This option is thus server-specific.

`magic_quotes_gpc` boolean

  Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically. If magic_quotes_sybase is also on, a single-quote is escaped with a single-quote instead of a backslash.

`magic_quotes_runtime` boolean

  If `magic_quotes_runtime` is enabled, most functions that return data from any sort of external source including databases and text files will have quotes escaped with a backslash. If `magic_quotes_sybase` is also on, a single-quote is escaped with a single-quote instead of a backslash.

`magic_quotes_sybase` boolean

  If `magic_quotes_sybase` is also on, a single-quote is escaped with a single-quote instead of a backslash if `magic_quotes_gpc` or `magic_quotes_runtime` is enabled.

`max_execution_time` integer

  This sets the maximum time in seconds a script is allowed to take before it is terminated by the parser. This helps prevent poorly written scripts from tieing up the server.

`memory_limit` integer

  This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server.

`nsapi_ext` string

`short_open_tag` boolean

  Tells whether the short form (`<? ?>`of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you have to disable this option. If disabled, you must use the long form of the open tag (`<?php ?>`).

`sql.safe_mode` boolean

`track_errors` boolean

  If enabled, the last error message will always be present in the global variable $php_errormsg.

`track_vars` boolean

  If enabled, GET, POST and cookie input can be found in the global associative arrays $HTTP_GET_VARS, $HTTP_POST_VARS and $HTTP_COOKIE_VARS, respectively.

`upload_tmp_dir` string

  The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as.

`user_dir` string

  The base name of the directory used on a user's home directory for PHP files, for example `public_html`.

`warn_plus_overloading` boolean

  If enabled, this option makes PHP output a warning when the plus (`+`) operator is used on strings. This is to make it easier to find scripts that need to be rewritten to using the string concatenator instead (`.`).

## Mail Configuration Directives

`SMTP` string

  DNS name or IP address of the SMTP server PHP under Windows should use for mail sent with the mail() function.

`sendmail_from` string

  Which "From:" mail address should be used in mail sent from PHP under Windows.

`sendmail_path` string

  Where the sendmail program can be found, usually `/usr/sbin/sendmail` or `/usr/lib/sendmail` configure does an honest attempt of locating this one for you and set a default, but if it fails, you can set it here.

  Systems not using sendmail should set this directive to the sendmail wrapper/replacement their mail system offers, if any. For example, Qmail users can normally set it to `/var/qmail/bin/sendmail`.

## Safe Mode Configuration Directives

`safe_mode` boolean

  Whether to enable PHP's safe mode. Read the Security chapter for more more information.

`safe_mode_exec_dir` string

  If PHP is used in safe mode, system() and the other functions executing system programs refuse to start programs that are not in this directory.

## Debugger Configuration Directives

`debugger.host` string

  DNS name or IP address of host used by the debugger.

`debugger.port` string

  Port number used by the debugger.

`debugger.enabled` boolean

  Whether the debugger is enabled.

## Extension Loading Directives

`enable_dl` boolean

  This directive is really only useful in the Apache module version of PHP. You can turn dynamic loading of PHP extensions with dl() on and off per virtual server or per directory.

  The main reason for turning dynamic loading off is security. With dynamic loading, it's possible to ignore all the safe_mode and open_basedir restrictions.

  The default is to allow dynamic loading, except when using safe-mode. In safe-mode, it's always imposible to use dl().

`extension_dir` string

  In what directory PHP should look for dynamically loadable extensions.

`extension` string

  Which dynamically loadable extensions to load when PHP starts up.

## MySQL Configuration Directives

`mysql.allow_persistent` boolean

  Whether to allow persistent MySQL connections.

`mysql.default_host` string

  The default server host to use when connecting to the database server if no other host is specified.

`mysql.default_user` string

  The default user name to use when connecting to the database server if no other name is specified.

`mysql.default_password` string

  The default password to use when connecting to the database server if no other password is specified.

`mysql.max_persistent` integer

  The maximum number of persistent MySQL connections per process.

`mysql.max_links` integer

  The maximum number of MySQL connections per process, including persistent connections.

## mSQL Configuration Directives

`msql.allow_persistent` boolean

  Whether to allow persistent mSQL connections.

`msql.max_persistent` integer

  The maximum number of persistent mSQL connections per process.

`msql.max_links` integer

  The maximum number of mSQL connections per process, including persistent connections.

## Postgres Configuration Directives

`pgsql.allow_persistent` boolean

  Whether to allow persistent Postgres connections.

`pgsql.max_persistent` integer

  The maximum number of persistent Postgres connections per process.

`pgsql.max_links` integer

  The maximum number of Postgres connections per process, including persistent connections.

## Sybase Configuration Directives

`sybase.allow_persistent` boolean

  Whether to allow persistent Sybase connections.

`sybase.max_persistent` integer

  The maximum number of persistent Sybase connections per process.

`sybase.max_links` integer

  The maximum number of Sybase connections per process, including persistent connections.

## Sybase-CT Configuration Directives

`sybct.allow_persistent` boolean

  Whether to allow persistent Sybase-CT connections. The default is on.

`sybct.max_persistent` integer

  The maximum number of persistent Sybase-CT connections per process. The default is -1 meaning unlimited.

`sybct.max_links` integer

  The maximum number of Sybase-CT connections per process, including persistent connections. The default is -1 meaning unlimited.

`sybct.min_server_severity` integer

  Server messages with severity greater than or equal to sybct.min_server_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_server_severity(). The default is 10 which reports errors of information severity or greater.

`sybct.min_client_severity` integer

  Client library messages with severity greater than or equal to sybct.min_client_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_client_severity(). The default is 10 which effectively disables reporting.

`sybct.login_timeout` integer

  The maximum time in seconds to wait for a connection attempt to succeed before returning failure. Note that if max_execution_time has been exceeded when a connection attempt times out, your script will be terminated before it can take action on failure. The default is one minute.

`sybct.timeout` integer

  The maximum time in seconds to wait for a select_db or query operation to succeed before returning failure. Note that if max_execution_time has been exceeded when am operation times out, your script will be terminated before it can take action on failure. The default is no limit.

`sybct.hostname` string

  The name of the host you claim to be connecting from, for display by sp_who. The default is none.

## Informix Configuration Directives

`ifx.allow_persistent` boolean

  Whether to allow persistent Informix connections.

`ifx.max_persistent` integer

  The maximum number of persistent Informix connections per process.

`ifx.max_links` integer

  The maximum number of Informix connections per process, including persistent connections.

`ifx.default_host` string

  The default host to connect to when no host is specified in ifx_connect() or ifx_pconnect().

`ifx.default_user` string

  The default user id to use when none is specified in ifx_connect() or ifx_pconnect().

`ifx.default_password` string

  The default password to use when none is specified in ifx_connect() or ifx_pconnect().

`ifx.blobinfile` boolean

  Set to true if you want to return blob columns in a file, false if you want them in memory. You can override the setting at runtime with ifx_blobinfile_mode().

`ifx.textasvarchar` boolean

  Set to true if you want to return TEXT columns as normal strings in select statements, false if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().

`ifx.byteasvarchar` boolean

  Set to true if you want to return BYTE columns as normal strings in select queries, false if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().

`ifx.charasvarchar` boolean

  Set to true if you want to trim trailing spaces from CHAR columns when fetching them.

`ifx.nullformat` boolean

  Set to true if you want to return NULL columns as the literal string "NULL", false if you want them returned as the empty string "". You can override this setting at runtime with ifx_nullformat().

## BC Math Configuration Directives

`bcmath.scale` integer

  Number of decimal digits for all bcmath functions.

## Browser Capability Configuration Directives

`browscap` string

  Name of browser capabilities file. See also get_browser().

## Unified ODBC Configuration Directives

`uodbc.default_db` string

  ODBC data source to use if none is specified in odbc_connect() or odbc_pconnect().

`uodbc.default_user` string

  User name to use if none is specified in odbc_connect() or odbc_pconnect().

`uodbc.default_pw` string

  Password to use if none is specified in odbc_connect() or odbc_pconnect().

`uodbc.allow_persistent` boolean

  Whether to allow persistent ODBC connections.

`uodbc.max_persistent` integer

  The maximum number of persistent ODBC connections per process.

`uodbc.max_links` integer

  The maximum number of ODBC connections per process, including persistent connections.

Prev | Home | Next
Problems? | Up | Security