今天,我們將了解如何在 PHP 中使用 error_reporting
函數進行偵錯。
error_reporting
函數可讓您配置在 PHP 腳本中報告哪些錯誤。事實上,當您在 PHP 腳本中使用 error_reporting
函數時,它只是在執行時間設定 error_reporting
指令。如果您了解 php.ini 設定文件,它提供了許多用於不同目的的設定指令,error_reporting
指令就是其中之一。具體來說,error_reporting
指令允許您在 PHP 腳本中設定錯誤報告等級。
在這篇簡短的文章中,我們將介紹 error_reporting
函數的基礎知識,並將討論如何在日常 PHP 開發中有效地使用它。
讓我們快速瀏覽一下 error_reporting
函數的語法。
error_reporting(int $error_level = null): int
它需要一個參數,讓您可以傳遞要設定的錯誤等級。它是一個可選參數,因此如果您不傳遞它,它應該會傳回目前的錯誤報告等級。
您可以在此參數中傳遞位元遮罩或命名常數。但是,建議傳遞命名常數以相容未來的 PHP 版本。另外,如果您使用命名常數,它也會提高程式碼的可讀性。
您可以在 error_reporting
函數的第一個參數中傳遞不同的錯誤常數。以下是所有常數的快速清單。
E_ERROR
: 顯示致命運行時錯誤E_WARNING
:顯示執行階段警告E_PARSE
:顯示編譯時解析錯誤E_NOTICE
:顯示運行時通知E_CORE_ERROR
: 顯示 PHP 初始啟動期間發生的致命錯誤E_CORE_WARNING
:顯示 PHP 初始啟動期間發生的警告E_COMPILE_ERROR
: 顯示致命編譯時錯誤E_COMPILE_WARNING
:顯示致命編譯時警告E_USER_ERROR
:顯示使用者產生的錯誤訊息E_USER_WARNING
:顯示使用者產生的警告訊息E_USER_NOTICE
:顯示使用者產生的通知訊息E_STRICT
:建議更改您的程式碼,以確保最佳的互通性和前向相容性E_RECOVERABLE_ERROR
:顯示可擷取的致命錯誤E_DEPRECATED
:顯示未來版本中無法運作的程式碼的警告E_USER_DEPRECATED
:與 E_DEPRECATED
類似,但它只顯示使用者產生的警告訊息E_ALL
:顯示所有錯誤、警告和通知每個常數都允許您設定不同層級的錯誤報告。在下一節中,我們將了解如何在日常 PHP 開發中使用 error_reporting
函數。
error_reporting
函數在上一節中,我們了解了 error_reporting
函數的語法。在本節中,我們將了解如何在 PHP 腳本中使用它。
讓我們快速瀏覽一下以下範例。
<?php error_reporting(E_ALL); ini_set('display_errors', 1); echo $foo; ?>
在上面的範例中,我們在error_reporting
函數的第一個參數中傳遞了E_ALL
常數,因此,它將顯示腳本中的所有錯誤、警告和通知。如果運行上面的腳本,它應該會顯示以下錯誤。
Notice: Undefined variable: foo in /web/demo/error_reporting.php on line 4
由於我們使用 $foo
變數而沒有事先定義它,因此它會拋出通知,通知您應該在實際使用它之前定義 $foo
變數。
或者,您也可以傳遞 -1
而不是 E_ALL
常數,如下列程式碼片段所示,它會顯示所有可能的錯誤。
<?php error_reporting(-1); ?>
E_ALL
常數對於偵錯著名的 WSOD(死機白螢幕)錯誤非常有用。
讓我們來看看下面的例子。
<?php error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', 1); echo $foo; ?>
當您使用error_reporting
函數時,您可以使用&
、|
和~
等運算子來忽略和過濾特定類型的錯誤。在上面的範例中,我們想要顯示除通知之外的所有類型的錯誤,因此,我們在 E_NOTICE
常數前面使用了 ~
運算子。如果執行上面的腳本,它不會顯示僅使用 E_ALL
常數時應顯示的通知。
在本節中,我們將了解如何僅顯示特定類型的錯誤。讓我們快速瀏覽一下以下範例。
<?php error_reporting(E_WARNING | E_NOTICE); ini_set('display_errors', 1); include "foo_bar.php"; echo $foo; ?>
在上面的範例中,我們指示 error_reporting
函數希望只顯示警告和通知。正如您所看到的,我們使用了 |
運算符,因此它會顯示兩種類型的錯誤。
這就是如何在日常 PHP 開發中使用 error_reporting
函數和不同類型的錯誤常數進行偵錯。
今天,我們討論如何使用 PHP 中的 error_reporting
函數來偵錯 PHP 腳本中的錯誤。我們討論瞭如何使用它來顯示開發過程中不同層級的錯誤。
以上是使用 PHP error_reporting 簡化除錯的詳細內容。更多資訊請關注PHP中文網其他相關文章!