哪一个?

我从我的旧阿帕奇到 nginx 和 php 5.3.10。当我试图修改 php.ini 来满足我的需要时,我发现它们有3个:

$ locate php.ini


/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini

我应该剪辑哪一个?

123902 次浏览

一般来说,从命令行调用 PHP 二进制文件时使用 cli/php.ini文件。
您可以从命令行检查运行 php --ini的情况。

当 PHP 作为 FPM 运行时,将使用 fpm/php.ini—— nginx 安装就是这种情况。
您可以从 Web 服务器提供的 php 页面检查对 phpinfo()的调用。

cgi/php.ini,在你的情况下,很可能不会被使用。


使用两个不同的 php.ini文件 (一个用于 CLI,另一个用于从 Web 服务器提供页面)是相当常见的,并且有一个主要的优点: 它允许您在每种情况下具有不同的配置值。

通常情况下,在网络服务器使用的 php.ini文件中,你会指定一个相当短的 max_execution_time: 网页应该快速服务,如果一个页面需要超过几十秒的 (默认为30秒),这可能是因为一个错误-和页面的生成应该停止。
另一方面,您可以从 crontab (或手动)启动相当长的脚本,这意味着将要使用的 php.ini文件是 cli/中的文件。对于这些脚本,您将在 cli/php.ini中指定比在 fpm/php.ini中更长的 max_execution_time

max_execution_time是一个常见的示例; 当然,您可以对其他几个配置指令执行同样的操作。

这确实取决于具体情况,对我来说是在 fpm 中,因为我使用的是 PHP5-FPM。你的问题的解决方案可以是一个通用的 php.ini,然后使用一个符号链接创建如下:

ln -s /etc/php5/php.ini php.ini

然后,您所做的任何修改都将在一个通用的.ini 文件中。 不过,这可能不是真正的最佳解决方案,您可能希望修改某些配置,以便在一个位置上使用一个文件。而不是多个地点一起被黑。

尽管 Pascal 的回答很详细,信息量也很大,但是在假设每个人都知道如何使用 phpinfo()的前提下,他并没有提到一些关键信息

对于那些不知道的人:

导航到您的网络服务器根文件夹,如 /var/www/

在这个文件夹中创建一个名为 info.php的文本文件

编辑文件并键入 phpinfo()

导航到文件,如: http://www.example.com/info.php

这里你会看到 Loaded Configuration File下面的 php.ini路径:

phpinfo

确保完成后删除 info.php

您可以找到所使用的 php.ini 文件:

  • 通过在 php 页面中添加 Phpinfo ()并显示页面(如下面的图片)
  • 在 shell 中输入: php-i

接下来,您可以在 LoadedConfiguration 文件中找到这些信息(这里是/user/local/etc/php/php.ini)

有时候,您已经指出(没有) ,在这种情况下,您只需要将您的自定义 php.ini 放在这里: http://git.php.net/?p=php-src.git;a=blob;f=php.ini-production;hb=HEAD

我希望这个答案能有所帮助。