我从旧的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
我应该编辑哪一个?
答案 0 :(得分:65)
一般来说,从命令行调用PHP二进制文件时会使用cli/php.ini
文件。
您可以从命令行检查是否正在运行php --ini
。
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
路径:
确保在完成后删除info.php
。
答案 3 :(得分:2)
您可以找到使用的php.ini文件:
接下来,您可以在已加载的配置文件中找到相关信息(所以在这里&user/local/etc/php/php.ini)
有时,您已指出(无),在这种情况下,您只需要放置您可以在此处找到的自定义php.ini:http://git.php.net/?p=php-src.git;a=blob;f=php.ini-production;hb=HEAD
我希望这个答案会有所帮助。