序言
Xdebug 作為 PHP 除錯工具,提供了豐富的除錯函式和配置,可以直觀的看到 PHP 原始碼的步進和效能資料,以便優化PHP程式碼。
使用 phpstorm + xdebug 來除錯 php 程式是藉助強大的IDE監聽功能, 更方便的除錯程式. 提高我們的編碼效率, 固然 var_dump, print_r 等函式也能提供相應的功能, 但是自動化的工具更能夠事半功倍. 下面我根據自己的使用介紹下如何進行除錯和配置.
, 一種方式是用外部設定的 session, 另外一種是在 phpstorm 中配置頁面入口然後使用內建的監聽來訪問, 原理相同, 下面我們從原理開始講解
除錯原理
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/1d8437394643a0c4d5e9e4dde99673a6b9ca47d50084b081c3e599e4c25b91ba.jpg)
配置除錯環境
1) 配置 xdebug
這裡使用了最小化配置, 對於 profile 等功能沒有配置
[xdebug]
zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"
xdebug.remote_enable=1 # 啟用遠端除錯
xdebug.remote_connect_back=1 # 忽略 remote_host 配置, 不關注主機配置, 開發者使用最舒服
xdebug.remote_port=9050 # 監聽埠
複製程式碼
注意 這裡監聽埠預設是 9000 , 和 php 預設監聽重複, 注意儘量不用使用 9000, 以免出現不生效的情況.
2) 設定 phpstorm 配置並開啟監聽
這裡是讓 phpstorm 通過監聽埠的方式獲取到xdebug 斷點傳送過來的資料
2.1) 配置埠
我們這裡監聽的是 9500 埠, 和 xdebug 配置監聽資料埠一致
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/a08bfef766ddba2210da0f3f4ee34c40916b3372c331e5ede99a19f44eeb1768.jpg)
2.2) 開啟phpstorm 資料監聽
切換 “開始監聽PHP除錯連線” 按鈕。
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/f6dc253464fcfb220112685c01208a84303d89fb9c03d4eb9334aa3de03ba2d3.jpg)
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/087943563573638d3bf17c9c2bdf2cd1272c146f9d3d3c9ae2a7dbb686ebea67.jpg)
3) 在 phpstorm 中設定斷點
點選行號右側空白, 設定斷點
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/a359c3561b532809c042529bbf93063e7e86899156db49d288c3ab706ee7b0cb.jpg)
4) 設定 debug session
debug session 的工具的目的是設定一個cookie, 讓每次傳送資料的時候都會攜帶這個 cookie, 從而識別監聽.
4.1) 安裝工具
安裝 chrome 擴充套件 Xdebug helper
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/006323f4ad84482fd922585648dc4c5c52455120be1848717b7a6ef63f5fc0d6.jpg)
4.2) 點選 圖示設定session
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/7cdd38385c9de636284b48cba9afeeb234c4d1ca928e1c2ee543d537525633e2.jpg)
已經設定了cookie, Key 是 XDEBUG_SESSION
, 值是 PHPSTORM
, 我認為這裡的值無關緊要, 對於 phpstorm 來說, 是能夠監控到的.
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/ce42544677469147456a210a8bbdfabb1af2d64dc71cbd7af2d1abffeb40af22.jpg)
5) 執行頁面
這裡我們在斷點位置可以看到輸出的內容專案
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/345642745c9860b02ec2057be8363de9ddc4a649f095d1c9bd15393c74b7acd6.jpg)
另一種方式: 內部呼叫
這裡的另外一種方式的伺服器配置方式和流程完全一致, 就是第四步和第五步有所不同, 實現的原理是在phpstorm中設定執行的伺服器, 然後通過 debug 模式自動設定 XDEBUG_SESSION
, 並且自動開啟監聽.
內部呼叫: 4) 設定 debug session
4.1) 設定 web 訪問的伺服器
例如我這裡的本地域名是 l.dailian.sour-lemon.com
, 我們需要配置一個本地伺服器來開啟這個頁面, 我們首先配置一臺伺服器.
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/b86ef2fec5ad361f07165eaa015b3cbeee70332c54fe82421e51a7d0d525d2ce.jpg)
注意 這裡的配置的域名是你本地已經配置好開發環境的域名, 埠號是 本地開發所使用的埠, 我這裡是 l.dailian.sour-lemon.com
和 80
4.2) 配置除錯頁面
我們這裡建立的除錯頁面的型別是 PHP Web Application
, 伺服器選擇的是剛才已經建立好的伺服器
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/3d1da2ac72fe882ba087e983b8574f951ee57fda59db1db2407b39f0a739901b.jpg)
內部呼叫: 5) 執行測試頁面
這樣執行的情況下上面的 2.2) 開啟phpstorm 資料監聽
步驟可以忽略掉, 這裡不需要開啟這個監聽.
5.1) 開始 debug
點選 debug 按鈕, 這裡會自動開啟一個頁面並且傳遞一個唯一的ID(可能是程式 ID)作為 debug 值
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/70ea2882b64b3fc5c9618781979c788361913940718045e90f96bddd3b76b592.jpg)
開啟的url地址是: http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608
, 這裡的數值是會變動的.
5.2) 檢視 debug 皮膚
開啟 debug 皮膚, 會看到相對應的監聽 idekey, 這裡和上一步設定的key是一致的, 同樣也和 cookie 中的設定的 XDEBUG_SESSION
值一致
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/7720e62edcff47208353e2e77cfec4b3fae5ef216acba46b706be6451b271f29.jpg)
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/dcddae400c5c21ac7ee2c3e65b4c0be9cec8fb251879f97d4615c5ce0ab91137.jpg)
其他幫助
1. 檢視相容性
第一次執行的時候可以通過 phpstorm 自帶的工具來檢查配置的相容性.
Run > Web Server Debug Validation
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/25bb52ee76fd2f04df248fe1c8419d17fc6bf0a8d7b6c296065bd29a77684264.jpg)
2. debug 幫助皮膚說明
![[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)](https://i.iter01.com/images/41bf87dc189470ff7495eb31f1a162c23cb4729a55b30f56bedf14b270445b8e.jpg)
左側
綠色三角形 : Resume Program
,表示將繼續執行,直到下一個中斷點停止。
紅色方形 : Stop
,表示中斷當前程式除錯。
上方
第一個圖形示 : Step Over
,跳過當前函式。
第二個圖形示 : Step Into
,進入當前函式內部的程式(相當於觀察程式一步一步執行)。
第三個圖形示 : Force Step Into
,強制進入當前函式內部的程式。
第四個圖形示 : Step Out
,跳出當前函式內部的程式。
第五個圖形示 : Run to Cursor
,定位到當前游標。
框架說明 Frames : 載入的檔案列表 Variables : 可以觀察到所有全域性變數、當前區域性變數的數值 Watches : 可以新增變數,觀察變數隨著程式執行的變化。