为 Apache 和/或 CLI 修改 php.ini 的正确方法

Dom*_*Dom 6 php apache2 16.04

我想更改和添加一些 PHP 指令,一些用于 apache,一些用于 CLI,一些用于两者。例如,我想为所有服务器上下文设置默认时区。有几种不同的方法可以解决这个问题,但我不知道哪种方法是最好的。

我可以直接编辑主php.ini文件,这里/etc/php/7.0/apache2/php.ini和这里/etc/php/7.0/cli/php.ini,但我不知道这个文件会不会在升级时被覆盖。同样对于共享设置,例如时区,我必须记住编辑两个文件并保持这些更改同步。

我可以使用Apache的php_admin_valuephp_admin_flagphp_valuephp_flag指令。这里的优点是 php 设置可以在虚拟主机的基础上应用到虚拟主机上,我也可以将它们全局应用到 Apache。但是,这对 CLI 设置没有帮助。

php 目录具有与 Apache 类似的结构,允许使用phpenmod命令启用或禁用充满指令的文件。我可以复制这个结构,创建目录/etc/php/7.0/mydirectivesphp.ini在这个文件夹中放置文件,然后从/etc/php/7.0/apache2/conf.d/我的 php.ini 指令文件创建符号链接。这让我有一个单一的指令文件它增加了指令来Apache和PHP的CLI版本。我唯一不能做的就是通过虚拟指令虚拟主机。

有关如何正确执行此操作的任何建议?

abc*_*234 5

仅供参考,默认情况下不会覆盖由包安装的配置文件/etc/;在升级时,如果文件更改,则会出现带有选项的提示。

回到最初的问题,这是我将如何做到的:

  • 创建一个配置文件/etc/php/7.0/mods-available/50-mydirectives.ini并在那里做通用配置;然后使用phpenmod mydirectives启用它。

  • 分别在和 中做apachecli具体配置。/etc/php/7.0/apache2/conf.d//etc/php/7.0/cli/conf.d/

  • 在虚拟主机本身中进行虚拟主机特定的配置。

有了上面的配置就不需要编辑系统提供了php.ini

有关的:

  • 如果你使用 `-s` 选项,`phpenmod` 可以只为给定的 SAPI 启用配置,所以即使是 FPM 或 CLI 特定的配置也可以保存在 `/etc/php/7.0/mods-available/` 中,并为每个 SAPI 启用。 (2认同)