2009-10-22 46 views
2

在這裏的開發服務器上,一個設置已經改變,這使得任何PHP錯誤(任何級別)只輸出錯誤消息,沒有別的。爲了證明我的意思是,這裏有一個腳本來重現錯誤:PHP錯誤顯示刪除所有其他內容

<?php 
$array = array('a'); 
echo "Hello world"; 
echo $array[1]; 
echo $array[2]; 
echo "Goodbye world"; 
?> 

我期望從這個「世界,你好」,然後兩個PHP聲明說,有一個未定義的數組中的偏移量,然後「再見世界」。我真正看到的是:

PHP Notice: Undefined offset: 1 in /path/to/myfile.php on line 4 
PHP Notice: Undefined offset: 2 in /path/to/myfile.php on line 5 

...沒有別的。 (也請注意,它是純文本的,不是HTML)。當然,我可以設置error_reporting(0),但是我沒有看到任何錯誤。

有誰知道PHP設置會控制這個?

+1

+1 - 就遇到了這個最近一個客戶的服務器上,從來沒有根了出來。我只是修復了一些錯誤,一切都很好。奇怪的是,print_r()和類似的工作,只是沒有其他輸出。 – 2009-10-22 02:33:26

+0

+1 - @tinkertim我也是。 – 2009-10-22 02:39:23

回答

1

我的猜測是輸出緩衝已打開。嘗試:

<?php 
$array = array('a'); 
echo "Hello world"; 
ob_flush(); 
echo $array[1]; 
echo $array[2]; 
echo "Goodbye world"; 
?> 
+0

nope - 對輸出沒有任何影響 – nickf 2009-10-22 02:24:24

0

您需要關閉警告,並獲取致命錯誤。這應該這樣做:

error_reporting(E_ERROR | E_WARNING | E_PARSE);

或該:

的error_reporting(E_ERROR | E_PARSE);

錯誤報告方法在此處取一個整數,並且管道字符將它們的基礎整數值逐位或逐位排列,以實現傳遞給該函數的最終整數。

http://74.125.155.132/search?q=cache:QvgitR0nX34J:php.net/manual/en/function.error-reporting.php+php+fatal+error+reporting&cd=1&hl=en&ct=clnk&gl=us

+0

正如我在OP中所說的,擺弄'error_reporting'層意味着我可以看到我的輸出,但它不會告訴我是否有任何通知。我希望看到這些錯誤,但不要讓它們隱藏其他所有內容。 – nickf 2009-10-22 03:30:11

+0

錯誤可能只是打破你的html/css/javascript(ui輸出)。修復錯誤。你爲什麼不想首先解決它們? – David 2009-10-28 01:33:26

相關問題