2012-05-19 20 views
3

我的Ubuntu 10.04運行Nginx的+ + PHP-FPM 5.4PHP的解析錯誤將不會顯示

如果我設置display_errors = On在php.ini中打印的所有錯誤。如果我將其設置爲off,然後使用ini_set('display_errors,'1');直接在腳本中顯示,但不是解析錯誤,只是一個空白頁面。我試圖玩error_reporting和E_STRICT,但我找不到方法!

回答

14

如果您在php.ini禁用display_errors,然後再使用ini_set()只會包含ini_set()呼叫已被執行行之後啓用啓用它在你的PHP腳本。當PHP文件被解析(因此「解析錯誤」的名字) - PHP腳本甚至開始前

解析錯誤發生

這意味着它們發生在您的ini_set()甚至有執行機會之前 - 這意味着,在您的情況下,display_errors在解析錯誤發生時未啓用;因此,您不會顯示任何內容。

+1

所以他們唯一的解決方案,以顯示解析錯誤是使其能夠在ini文件? –

+0

它似乎非常合乎邏輯 - 並且符合http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors *中的第二個註釋(它表示「致命」,但這個想法就在那裏)* –

-1

嘗試error_reporting(E_ALL);。或者打開display_errorsdocs

2

除此之外,你還可以觀看錯誤日誌。通常,運行Ubuntu + Apache,你的錯誤日誌將在/var/log/apache2/error_log。要實時觀察發生了什麼,請運行如tail -f /var/log/apache2/error_log

這有時可以比使用php設置更直接。

+0

這個問題問的是nginx,而不是apache。 – Frug

0

我在這裏後,這是回答,但我發現解決的辦法。

對於我正在編寫的腳本,我創建了第二個腳本,其中包含ini_set()指令,後面跟着包含腳本I ,真的是我正在處理。

首先,這裏是test_run.php

<?php 

ini_set('display_errors', '1'); 
ini_set('error_reporting', E_ALL); 

include('./my_script.php'); 

?>