配置基本语法
section
php.ini 本身是一个文本文件,其内部分为多个 section。section 名字使用方括号括起来,如 [PHP]、[date] 等。section 名字之后是配置项。
两个比较特殊的 section 可以分别针对 PATH 和 HOST 来做个性化配置,不过这种配置方式只在 CGI/FastCGI 模式下生效。当我们有多个项目共用一个配置文件并且有个性化配置需求时,就可以采用这种方式。示例:
[PATH=/dir]
post_max_size = 20M
该配置表示当请求的 PHP 文件位于 /dir 目录下时,post_max_size 上限为 “20M”。
[HOST=localhost]
post_max_size = 20M
该配置表示当请求的 HOST 为 localhost 时,post_max_size 上限为 “20M”。
注意:这两种方式的配置项无法被覆盖,也无法被 ini_set 函数动态修改。
设定范围
PHP 中的配置项不是任何时候任何地方都允许修改的,每个配置项有其自己所属的模式,模式一共有 4 种。
-
PHP_INI_USER:可在用户脚本(如 ini_set)或 Windows 注册表(自PHP 5.3起)以及.user.ini 中设定。
-
PHP_INI_PERDIR:可在 php.ini、.htaccess 或 httpd.conf 中设定。
-
PHP_INI_SYSTEM:可在 php.ini 或 httpd.conf 中设定。
-
PHP_INI_ALL:可在任何地方设定。
在 PHP 内部,这 4 个模式以宏的方式定义:
#define ZEND_INI_USER (1<<0)
#define ZEND_INI_PERDIR (1<<1)
#define ZEND_INI_SYSTEM (1<<2)
#define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM)
配置项
配置项的格式如下:
directive = value
指令名大小写敏感,如 foo=bar 不同于 FOO=bar。
value 的值可以是以下形式:
-
字符串,如 “foo”。
-
数字,如 0、1、1.2。
-
PHP 常量,如 E_ALL、M_PI。
-
ini 常量,如 On、Off、True、False、Yes、No、None。
-
表达式,如 E_ALL & ~E_NOTICE。
-
已经存在的配置项,如
${open_basedir}
,即可以以变量的形式引用已经存在的配置项。
当配置项为布尔值的时候,可以使用 1、On、True、Yes 来表示真,使用 0、Off、False、No 来表示假。
value 为空或者 none,表示将该配置项设置为空:
foo = ; 将foo设为空字符串
foo = none ; 将foo设为空字符串
foo = "" ; 将foo设为空字符串
以下方式表示将 foo 设置为字符串 none:
foo = "none" ; 将foo设为字符串none