下面的範例都是基於 Windows 下的 LNMP 環境。
透過瀏覽器列印資訊進行偵錯(推薦學習:PHP影片教學)
方法
在程式碼中加入echo、var_dump、print_r 和exit,在瀏覽器中查看輸出。
優缺點
優點:
簡單,使用方便,不用安裝插件
對於自己寫的程式碼,或比較熟悉的框架,可以這麼用
缺點:
對於多分支邏輯,需要加很多程式碼或嘗試多次
對於不熟悉的邏輯,無法反映完整的執行流程。
有可能將偵錯語句遺漏在專案中
無法單步執行
#使用Xdebug 進行偵錯
XDebug 是C /S 結構,其中Client 是PHP 中安裝的Xdebug,Server 是IDE 中安裝的插件,使用DBGP 協定通訊。 PHP 執行腳本時,透過 Xdebug 插件向 IDE 發送偵錯訊息,並接收 IDE 發送過來的控制訊號。
需要為 PHP 安裝並開啟 Xdebug,然後設定 IDE 的 Xdebug 插件,讓二者可以通訊。
優缺點
支援單步調試和任意變數值的取得
配置複雜,需要IDE 安裝外掛程式
支援跟瀏覽器的配合,需要請求中攜帶XDEBUG_SESSION_START 參數
Web App 偵錯
對於web 應用,要開啟Xdebug 偵錯模式,必須在瀏覽器傳送的請求中新增額外的標誌。可以在 GET/POST/Cookie 參數中加入 XDEBUG_SESSION_START=session_name,這樣 Xdebug 就明白這個請求需要調試,去連接 IDE。
透過 console 終端進行偵錯(CLI 方式)
#對於非 web 應用,例如定時任務或單元測試,可以直接在控制台進行偵錯。
PhpStorm 中透過 Alt F12 快速鍵開啟命令列終端。但因為 IDE 中只能顯示一個終端,在開啟偵錯後的偵錯終端會覆蓋命令列終端,所以還是單獨開立命令列終端吧(Windows 下可以使用 DOS 視窗或 PowerShell)。
方法及原則
web 應用程式透過 GET/POST/Cookie 參數標誌偵錯請求,而非 web 應用則透過在命令列終端設定環境變數來開啟偵錯。
兩個步驟:
設定環境變數 XDEBUG_CONFIG="idekey=session_name",這個 idekey 需要跟 php.ini 中 Xdebug 部分設定的 idekey 一樣。
在命令列終端機執行腳本。執行時會喚起 IDE 的 debug 終端,可以單步調試,輸出結果即時顯示在命令列終端。
更多PHP相關技術文章,請造訪PHP圖文教學欄位進行學習!
以上是php怎麼除錯方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!