我想更改和添加一些 PHP 指令,一些用于 apache,一些用于 CLI,一些用于两者。例如,我想为所有服务器上下文设置默认时区。有几种不同的方法可以解决这个问题,但我不知道哪种方法是最好的。
我可以直接编辑主php.ini文件,这里/etc/php/7.0/apache2/php.ini和这里/etc/php/7.0/cli/php.ini,但我不知道这个文件会不会在升级时被覆盖。同样对于共享设置,例如时区,我必须记住编辑两个文件并保持这些更改同步。
我可以使用Apache的php_admin_value,php_admin_flag,php_value和php_flag指令。这里的优点是 php 设置可以在虚拟主机的基础上应用到虚拟主机上,我也可以将它们全局应用到 Apache。但是,这对 CLI 设置没有帮助。
php 目录具有与 Apache 类似的结构,允许使用phpenmod命令启用或禁用充满指令的文件。我可以复制这个结构,创建目录/etc/php/7.0/mydirectives,php.ini在这个文件夹中放置文件,然后从/etc/php/7.0/apache2/conf.d/我的 php.ini 指令文件创建符号链接。这让我有一个单一的指令文件它增加了指令来既Apache和PHP的CLI版本。我唯一不能做的就是通过虚拟指令虚拟主机。
有关如何正确执行此操作的任何建议?
仅供参考,默认情况下不会覆盖由包安装的配置文件/etc/;在升级时,如果文件更改,则会出现带有选项的提示。
回到最初的问题,这是我将如何做到的:
创建一个配置文件/etc/php/7.0/mods-available/50-mydirectives.ini并在那里做通用配置;然后使用phpenmod mydirectives启用它。
分别在和 中做apache和cli具体配置。/etc/php/7.0/apache2/conf.d//etc/php/7.0/cli/conf.d/
在虚拟主机本身中进行虚拟主机特定的配置。
有了上面的配置就不需要编辑系统提供了php.ini。
有关的: