2011-01-22 91 views
2

我在本地運行的Apache/PHP和在很多情況下會收到錯誤,比如未初始化變量 - 但我注意到有一個少數情況下,我沒有收到錯誤消息,我想知道,如果這是正常的,或者如果我對任何事情錯過了,不接收某些PHP錯誤信息

<?php 

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

$1a = "Hello world!"; 
echo $1a; 

?> 

而且不產生錯誤:

<?php 

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

function a() 
{ 
$b = 5; 
echo $b; 
}} 

a(); 

?> 

,此腳本產品PHP錯誤,因爲它應該喲ü?如果是這樣,我想知道爲什麼我沒有收到。這不是我可能會犯的錯誤,但是在其他時候,我收到了上面的空白頁面,我想要某種反饋。

+0

有你`檢查的phpinfo()`,看看這些函數ini_set調用真正獲得成功。如果他們這樣做,「本地設置」將顯示1/e_all。但是否則,是的,您應該從該代碼段中獲取通常的「意外的T_LNUMBER」錯誤。 – 2011-01-22 01:45:06

回答

3

您對ini_set調用從未得到執行,因爲錯誤的解析階段會發生(任何被執行,即前)。您需要先在.htaccess,httpd.conf或php.ini中設置這些配置值。

+0

這解釋了它。在我的php.ini我已成立「顯示錯誤」,「關」,並刪除「使用error_reporting」,這樣我可以模仿設立多個遠程主機,不顯示錯誤。現在我將在.htaccess中設置它,而不是在開發任何PHP腳本時開始。 – Shane 2011-01-22 02:09:37

2

打開php.ini,CTRL-F爲display_errors - 是否設置爲開?當我安裝php時,我使用ini_set();來嘗試查看錯誤,但它不起作用,但編輯php.ini文件起作用。

編輯:我查看了您發佈的頁面上的phpinfo()輸出,並將其設置爲關閉。如果可以,請打開它。如果我沒有記錯,您必須在編輯後重新啓動Apache。

EDIT2:在你php.ini文件,error_reporting應設置爲E_ALL & ~E_NOTICE(默認),E_ALL | E_STRICT(發展),或E_ALL & ~E_DEPRECATED(生產)。老實說,這對我來說都是胡言亂語 - 但如果它有幫助,我的設置爲E_ALL & ~E_DEPRECATED,並且我從您的代碼中收到錯誤。

+0

是的,這工作,但自從其他人解釋了PHP的行爲現象,我給了它答案。 – Shane 2011-01-22 02:11:48