2017-01-17 94 views
4

我有一個問題,在過去的幾個小時裏讓我瘋狂:我不能在我的開發機器上覆蓋默認值error_reporting指令(Debian 8 + php-fpm 5.6.29 + Nginx/1.6.2)PHP-FPM無法覆蓋error_reporting?

的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值(並檢查了所有的php.ini的文件列入phpinfo();,以防萬一)但沒有。
  • Im不使用.user.ini fiels(兩次檢查)
  • error_reporting(E_PARSE)ini_set('error_reporting', E_PARSE);試過兩者。那些指令應該覆蓋ini文件,對吧?

當然每一個編輯的ini文件我沒有重啓PHP5-FPM處理後(試過也停止,然後啓動,而不是重新啓動/重新加載)

一件奇怪的事是,其實我可以覆蓋其他參數display_errors例如,既可以從ini文件中調用,也可以從ini_set調用中使用)。

那麼,到目前爲止我錯過了什麼?

+0

我跑這在我的PHP7-FPM和它的作品。也許一個php5-fpm的錯誤? – apokryfos

+1

@apokryfos dunno,我已經使用了php5 + fpm多年,這是第一次發生在我身上! p.s:請不要說「升級到php7」。如果可以的話,我會的! – Strae

+0

如果您最近將PHP版本從5.6.X-1升級到了5.6.X,我會說它可能值得再次降級,看看是否可以修復它。如果沒有,那麼可能會有更微妙的事情發生。 – apokryfos

回答

0

這味道就像php_admin_value。檢查fpm/php.inifpm/pool.d/*fpm/conf.d/*爲:

php_admin_value[error_reporting] = E_ALL 

這是未覆蓋禁止和像你描述產生相同的輸出。也可以從nginx的CONFIGS設置,檢查:

fastcgi_param PHP_ADMIN_VALUE ...