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
調用中使用)。
那麼,到目前爲止我錯過了什麼?
我跑這在我的PHP7-FPM和它的作品。也許一個php5-fpm的錯誤? – apokryfos
@apokryfos dunno,我已經使用了php5 + fpm多年,這是第一次發生在我身上! p.s:請不要說「升級到php7」。如果可以的話,我會的! – Strae
如果您最近將PHP版本從5.6.X-1升級到了5.6.X,我會說它可能值得再次降級,看看是否可以修復它。如果沒有,那麼可能會有更微妙的事情發生。 – apokryfos