PHP-FPM无法覆盖error_reporting?

时间:2017-01-17 14:11:31

标签: php php-5.6 fpm

我有一个问题,让我在过去几个小时内让我发疯:我无法在我的开发机器上覆盖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调用中运行。

那么,到目前为止我还缺少什么?

1 个答案:

答案 0 :(得分:1)

这闻起来像php_admin_value。检查您的fpm/php.inifpm/pool.d/*fpm/conf.d/*

php_admin_value[error_reporting] = E_ALL

它是不可覆盖的,并产生与您描述的相同的输出。也可以从nginx配置中设置,检查:

fastcgi_param PHP_ADMIN_VALUE ...