使用 PHP error_reporting 簡化除錯

王林
發布: 2023-08-31 10:30:01
原創
1517 人瀏覽過

使用 PHP error_reporting 简化调试

今天,我們將了解如何在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!