71

我从旧的 apache 迁移到 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

我应该编辑哪一个?

4

4 回答 4

76

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

fpm/php.ini将在 PHP 作为 FPM 运行时使用 - 这是 nginx 安装的情况。
您可以从您的网络服务器提供的 php 页面检查该调用phpinfo()

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


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

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

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

于 2012-05-19T14:15:19.463 回答
5

尽管 Pascal 的回答详细且内容丰富,但在假设每个人都知道如何使用的情况下没有提及一些关键信息phpinfo()

对于那些不这样做的人:

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

在此文件夹中创建一个名为info.php

编辑文件并输入phpinfo()

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

在这里,您将看到以下php.ini路径Loaded Configuration File

phpinfo

确保完成后删除info.php

于 2017-05-22T15:46:42.900 回答
3

这真的取决于情况,对我来说它在 fpm 中,因为我使用的是 PHP5-FPM。您的问题的解决方案可能是通用 php.ini,然后使用创建的符号链接,如:

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

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

于 2012-05-19T14:23:03.517 回答
2

您可以找到使用的 php.ini 文件是什么:

  • 通过在一个php页面中添加phpinfo()并显示页面(如下图)
  • 在 shell 中,输入: php -i

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

有时,您已经指出(无),在这种情况下,您只需将您可以在此处找到的自定义 php.ini 放入:http ://git.php.net/?p=php-src.git;a=blob ;f=php.ini-production;hb=HEAD

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

于 2017-05-24T19:09:37.887 回答