我有一个问题,让我在过去几个小时内让我发疯:我无法在我的开发机器上覆盖error_reporting
指令的默认值(Debian 8 + php-fpm) 5.6.29 + Nginx / 1.6.2)
php包我使用:
$ dpkg --get-selections | grep php
libapache2-mod-php5 install
php-console-table install
php5 install
php5-cli install
php5-common install
php5-curl install
php5-fpm install
php5-gd install
php5-intl install
php5-json install
php5-mcrypt install
php5-mysql install
php5-readline install
php5-xmlrpc install
php5-xsl install
考虑以下死亡简单的脚本:
<?php
$initial_value = error_reporting(); // Just read the current value
error_reporting(E_PARSE); // Lets set it to something else.
$update_value = error_reporting(); // Read again.
printf(
"Initial value: %s\nFinal value: %s",
$initial_value,
$update_value
);
如果我从cli运行它,它可以工作:
$ php test.php
// output: Initial value: 22527 Final value: 4
但如果我在php5-fpm下运行,输出为:
Initial value: 32767 Final value: 32767
我尝试过的事情:
php.ini
内设置值(并检查列出到phpinfo();
的所有php.ini文件,以防万一),但没有。.user.ini
fiels(已检查过两次)error_reporting(E_PARSE)
和ini_set('error_reporting', E_PARSE);
进行了尝试。那些指令应该覆盖ini文件,对吗?当然每次编辑到ini文件后我都会重启php5-fpm进程(尝试也停止然后启动而不是重启/重新加载)
奇怪的是我实际上可以覆盖其他参数(display_errors
例如,可以从ini文件和ini_set
调用中运行。
那么,到目前为止我还缺少什么?
答案 0 :(得分:1)
这闻起来像php_admin_value
。检查您的fpm/php.ini
或fpm/pool.d/*
或fpm/conf.d/*
:
php_admin_value[error_reporting] = E_ALL
它是不可覆盖的,并产生与您描述的相同的输出。也可以从nginx配置中设置,检查:
fastcgi_param PHP_ADMIN_VALUE ...