PHP运行时配置

在PHP启动时会读取PHP的配置文件php.ini,对于服务器模块版本的PHP仅在web服务器启动时读取一次,而CGI和CLI版本的PHP每次调用都会读取。在php.ini文件中可以使用环境变量,PHP5.1以后还可以在ini文件中引用ini中已存在的变量。读取php.ini文件时,按如下顺序查找php.ini文件:

  1. SAPI模块所指定的位置(apache2中的PHPIniDir指令、CGI和CLI的 -c 命令行选项、NSAPI中的php_ini参数、THTTPD中的PHP_INI_PATH环境变量等)。
  2. 环境变量PHPRC,PHP5.2之前的顺序在注册表键值之后。
  3. PHP5.2起,在windows系统中,可以为不同的PHP版本设置不同的php.ini文件位置,会按[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]、[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]、[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]的顺序检查注册表目录,其中x、y、z分别表示PHP的主版本号、次版本号和发布版本号。在任一目录中找到的第一个IniFilePath的值作为php.ini的位置。
  4. 在windows系统中注册表[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]中IniFilePath的值。
  5. 除CLI外,当前工作目录。
  6. SAPI模式下web服务器目录,或者在windows下PHP所在目录。
  7. windows系统下windows系统目录(c:\windows或c:\winnt),或者编译时--with-config-file-path选项指定的位置。

如果存在php-.ini,则会用它来代替php.ini,其中是指当前SAPI模块的名称,比如CLI,名称为php-cli.ini。SAPI的名称可以通过函数php_sapi_name()获取。

PHP5.3起支持每个目录的.htaccess风格的ini文件,此类文件只可以被CGI/FastCGI SAPI处理,此功能使得PECL的htscanner扩展作废。如果使用Apache,则用.htaccess文件有同样效果。除了php.ini文件外,还会从被执行的PHP文件所在目录开始一直上升到$_server['DOCUMENT_ROOT']所指定的web根目录扫做ini文件。如果被执行的PHP文件在web根目录外,则只扫描被执行的PHP文件所在的目录。在.user.ini风格的ini文件中只有PHP_INI_PERDIR和PHP_INI_USER模式的ini配置能被识别。

对于.user.ini文件,有两个配置用于控制ini文件的使用:

  1. user_ini.filename:指定PHP在目录中查找的ini文件名,如果为空字符串,则不会进行查找,默认值为.user.ini。
  2. user_ini.cache_ttl:指定重新读取ini文件的时间间隔,单位为秒,默认值为300(5分钟)。

 

你可能感兴趣的:(PHP)