PHP-FPM无法覆盖error_reporting?

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

那么,到目前为止我到底错过了什么?

最佳答案 这闻起来像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 ...
点赞