php.ini:哪一个?

时间:2012-05-19 13:57:11

标签: php

我从旧的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 个答案:

答案 0 :(得分:65)

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

当PHP作为FPM运行时,将使用

fpm/php.ini - 这是nginx安装的情况。
您可以检查从您的网络服务器提供的php页面调用phpinfo()

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


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

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

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

答案 1 :(得分:3)

这真的取决于具体情况,对我而言,因为我使用的是PHP5-FPM。您的问题的解决方案可以是通用的php.ini,然后使用创建的符号链接:

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

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

答案 2 :(得分:2)

尽管Pascal的回答详细且内容丰富,但在假设每个人都知道如何使用phpinfo()

的情况下,未能提及一些关键信息

对于那些不这样做的人:

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

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

的文本文件

编辑文件并输入phpinfo()

导航到以下文件:http://www.example.com/info.php

在此处,您会看到php.ini下的Loaded Configuration File路径:

phpinfo

确保在完成后删除info.php

答案 3 :(得分:2)

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

  • 在php页面中添加 phpinfo()并显示页面(如下图所示)
  • 从shell中输入:php -i

接下来,您可以在已加载的配置文件中找到相关信息(所以在这里&user/local/etc/php/php.ini)

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

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