2014-10-05 27 views
0

PHP片段:PHP error_reporting-分別禁用然後用0和1使不起作用

<?php 
error_reporting(0); 
$a; 

echo ' a = '.$a.'<br>'; 



error_reporting(1); 

echo ' b= '.$b; 

?> 

和輸出中是

a = 
b= 

沒有任何通知。

我預計error_reporting(1)工作顯示錯誤。但是,如果我使用error_reporting(E_ALL)來替代,它會顯示未定義變量b的通知;

的問題是:

1)如果參數爲0或false然後錯誤supressed,那麼爲什麼不1或true將以相反的方式工作?

2)如果它的PHP site的文檔中提到的是0或false可以作爲參數,而能找到該hereE_ALL可以用作一個參數傳遞?

回答

0

error_reporting()預計a bit field parameter$level它代表各種error_reporting options。爲了使有關未定義變量通知你想要的E_ALLE_STRICT組合:

error_reporting(E_ALL | E_STRICT); 

(從PHP 5.4,因爲它包含在E_ALL可以省略E_STRICT)。使用整數0僅表示您已禁用所有選項。

根據您的INI設置,你可能還需要使錯誤的顯示 - 用於調試,禁用它生產:

ini_set('display_errors', 1); 

例子:

ini_set('display_errors', 1); 

error_reporting(0); 
echo $a; 

error_reporting(E_ALL | E_STRICT); 
echo $b; 

將上面例子當您嘗試訪問未定義的$ b時顯示通知。

+0

只是找不到我在OP中提到的兩個問題的答案。 – 2014-10-05 09:12:22

+0

只需按照我提供的鏈接。我還解釋了爲什麼你可以傳遞0.如果你通過'false',PHP會自動將值轉換爲'0'。 – hek2mgl 2014-10-05 09:13:01

+0

我跟着那些之前。我沒有找到答案,爲什麼'error_reporting(1)'將無法正常工作,並且php DOC網站中的「0」或「false」被視爲參數。 – 2014-10-05 09:15:39

0


error_reporting(1)是equivelant爲error_reporting(E_ERROR)這意味着你只能激活錯誤從PHP
報告你的情況,你必須寫error_reporting(E_NOTICE)看到從PHP
消息可以與許多類型的報告結合error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE)
要重新激活所有類型的錯誤和警告,您可以編寫error_reporting(-1)
希望它有幫助

+0

我提到了兩個問題,即1和2,並且無法理解對這些問題的答案。 – 2014-10-05 09:13:31