PHP.ini 能不能加载子配置文件 ?
配置 nginx 的时候,在配置文件中可以方便的使用 include 指令来把配置文件内容分割,从而达到方便管理的目的。 但是在使用 php 的时候也希望有这样的功能,这样在升级或者重装环境的时候就知道自己曾经改过哪些配置了。 但是 php.ini 里面并不能直接载入其他文件,但是在官方文档中给出了解决方案 。
首先明确一点,php在加载配置文件的时候分为主配置文件和附加配置文件。 主配置文件这里不讨论,因为不同操作系统下位置不同,搜索机制也不同。具体参见文档中的说明。
实现方法
这里我们只看在主配置文件 php.ini 加载完成以后如何补充加载从配置文件。 它有以下两个方法
- 编译 php 的时候,使用参数 –with-config-file-scan-dir 指定目录 php在加载主配置文件之后再加载在这个目录里面 ini 文件
- 设置环境变量 PHP_INI_SCAN_DIR 的值为子配置文件的目录
方法1 适合自己有编译环境或者很方便编译的系统,例如 linux 下经常自己编译 php 。 方法2 适合下载别人编译好的版本。
注意事项:
- 无论 1 还是 2 都可以按顺序指定多个目录,加载顺序也会根据目录顺序,每个目录里面 ini 文件文件名排序按顺序加载。
- 多个目录设置分隔符根据操作系统不同而不同,具体可以用PHP打印 PATH_SEPARATOR 常量查看,windows是分号,linux 是冒号
- 环境变量并不是只有操作系统才有,Apache 运行 或者 IIS 运行也有专门的环境变量设置,在鼓捣的时候不要弄混了去设置成系统环境变量,如果是命令行执行,可以使用 export 或者 set 命令来分别给 linux 和 windows 添加临时环境变量
验证
可以使用phpinfo();查看 代码验证相关函数 php_ini_scanned_files