PHP - 除錯Bug



PHP 程式碼中的bug指的是程式中的錯誤,會導致意外結果或崩潰。在使用者發現bug之前,系統地查詢bug的過程稱為除錯。本章提供了一些在PHP程式碼中追蹤bug的重要技巧。

程式很少能第一次就正確執行。你的程式中可能出現很多問題,導致PHP直譯器生成錯誤訊息。你可以選擇錯誤訊息的輸出位置。訊息可以與其他程式輸出一起傳送到Web瀏覽器。它們也可以包含在“Web伺服器錯誤日誌”中。

要在瀏覽器中顯示錯誤訊息,請將“display_errors”配置指令設定為ON。確保在“php.ini”檔案中啟用了以下設定。

display_errors=On
display_startup_errors=On

你也可以使用ini_set()函式來覆蓋“php.ini”配置:

ini_set('display_errors', 1)
ini_set('display_startup_errors', 1)

要將錯誤傳送到Web伺服器錯誤日誌,請將“log_errors”設定為ON。如果你想同時在兩個位置顯示錯誤訊息,可以將它們都設定為On。

PHP定義了一些常量,你可以使用它們來設定error_reporting的值,以便只報告特定型別的錯誤:

  • E_ALL(所有錯誤,除了嚴格通知)

  • E_PARSE(解析錯誤)

  • E_ERROR(致命錯誤)

  • E_WARNING(警告)

  • E_NOTICE(通知)

  • E_STRICT(嚴格通知)

編寫PHP程式時,最好使用支援PHP的編輯器,如BBEdit或Emacs。這些編輯器的特殊功能之一是語法高亮顯示。它會根據程式不同部分的內容更改其顏色。例如,字串為粉色,if和while等關鍵字為藍色,註釋為灰色,變數為黑色。

微軟的VS Code也是編輯PHP程式碼的好選擇。如果你安裝了VS Code擴充套件Intelephense,你將在編輯器視窗輸入PHP語句時獲得型別提示和錯誤訊息。

另一個功能是引號和括號匹配,這有助於確保引號和括號平衡。當你輸入一個結束分隔符,例如“}”,編輯器會突出顯示它匹配的開始“{”。

除錯程式碼時需要檢查的要點

除錯程式程式碼時,需要驗證以下幾點:

缺少分號

每個PHP語句都以分號(;)結尾。PHP不會停止讀取語句,直到它到達分號。如果你省略一行末尾的分號,PHP將繼續讀取下一行的語句。

等號不夠

當你在比較語句中詢問兩個值是否相等時,需要兩個等號(==)。使用一個等號是一個常見的錯誤。

變數名拼寫錯誤

如果變數名拼寫錯誤,PHP會將其理解為一個新的變數。記住:對PHP來說,$test與$Test不是同一個變數。

缺少美元符號

變數名中缺少美元符號很難發現,但至少它通常會導致錯誤訊息,這樣你就能知道在哪裡查詢問題。

引號問題

引號可能過多、過少或型別錯誤。因此,請檢查引號是否平衡。

缺少括號和花括號

它們應該總是成對出現。

陣列索引

PHP中的陣列是專案的集合,每個專案都分配一個從0開始遞增的索引。

此外,要正確處理所有錯誤,並將所有跟蹤訊息定向到系統日誌檔案,以便如果發生任何問題,它將被記錄到系統日誌檔案中,你將能夠除錯該問題。

廣告