![我可以添加第二个 php.ini 文件来取代第一个文件吗?](https://linux22.com/image/1449392/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%B7%BB%E5%8A%A0%E7%AC%AC%E4%BA%8C%E4%B8%AA%20php.ini%20%E6%96%87%E4%BB%B6%E6%9D%A5%E5%8F%96%E4%BB%A3%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
我已经更改了我的 php.ini 文件,因此每次更新 PHP 包时我都不会更新 php.ini 文件。我想将我的更改“分叉”到另一个文件,这样我就可以更新实际的 php.ini 文件而不会丢失我的更改。
我意识到 PHP 5.3 引入了每个目录的 .ini 文件,但是我的服务器有多个虚拟主机 - 因此有多个文档根目录 - 因此没有一个地方可以使用每个目录的方法放置覆盖的 php.ini 文件。
有没有办法让 PHP 检查“修改”的 php.ini 文件?
答案1
PHP 从某个目录加载其他 .ini 文件。在 Debian 8 机器上,该目录为:/etc/php5/apache2/conf.d
。
该目录中的文件按字母顺序加载,因此命名一个文件00-overrides.ini
(例如)将导致它首先被加载。该文件中设置的设置将覆盖默认 php.ini 中设置的设置。
答案2
如果您将 PHP 作为 Apache 模块运行,则有一个指令可以设置 PHP 查找 php.ini 的目录路径:
LoadModule php5_module "c:/php/php5apache2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
该示例适用于 Windows,但对于 Linux 系统也同样适用。
请注意,指定位置的 php.ini 将代替默认位置中的 php.ini,它不会以任何方式覆盖或扩展它。
这样,当你更新 PHP 时,它将覆盖默认位置的 php.ini,但不会覆盖你的自定义 php.ini
参考:http://php.net/manual/en/install.windows.apache2.php#install.windows.apache2.module