php.ini:哪一个?

我从我的旧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 

我应该编辑哪一个?

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

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

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

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

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

max_execution_time是一个常见的例子; 当然,您也可以使用其他几个configuration指令。

这真的取决于这种情况,对我来说,它是在我使用PHP5-FPM的fpm中。 解决您的问题可能是一个普遍的php.ini,然后使用像这样创build的符号链接:

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

然后,您所做的任何修改将在一个通用的.ini文件中。 这可能不是真正的最佳解决scheme,但是您可能需要考虑修改某些configuration,以便在一个位置使用一个文件。 没有多个地点一起入侵。

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

对于那些没有:

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

在这个文件夹内创build一个名为info.php的文本文件

编辑文件并键入phpinfo()

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

在这里你会看到Loaded Configuration File下的php.inipath:

的phpinfo

你可以find使用的php.ini文件是什么:

  • 通过在php页面中添加phpinfo()并显示页面(如下图)
  • 从shell中input:php -i

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

有时候,你已经指出(没有),在这种情况下,你只需要把你的自定义php.ini,你可以在这里find: http : //git.php.net/? p=php-src.git;a= blob ; F = php.ini中生产; HB = HEAD

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