使用phpstorm+xdebug進行PHP遠程調試
- 2019-03-24 11:48:00
- CJL 原創
- 5770
xDebug是最常見的php調試工具之一,怎麽能不會用
使用場景:本機調試php web、腳本。調試遠程機器上運行的php web、腳本。本機使用相對簡單,對於習慣把開髮環境搭建到服務器的衕學當然是遠程調試更方便,一次搭建開髮環境、到處編碼不是夢。
註意事項:現有網絡教程中大都忽略瞭一箇問題,遠程服務器需要能訪問到開髮機,因爲當服務器接收到到debug標誌的請求時需要把信息髮送到開髮機的phpstorm中。對於有NAT的網絡環境中可以通知端口映射或ssh通道的方式保證開髮機和服務器之間可以正常通信。
一、服務器安裝xdebug
網上可以很輕易的搜到安裝教程,大體的步驟基本上就是:穫取phpinfo信息,根據phpinfo信息安裝php開髮工具包,下載xdebug源碼、編輯安裝,修複php.ini文件啟用xdebug。
蔘考這篇文章:https://www.jianshu.com/p/1b617b9066b6
1、在自己服務器上創建一箇文件打印phpinfo();
2、訪問併右鍵查看網頁源碼複製齣來文本,粘貼到 https://xdebug.org/wizard.php
3、根據提示進行安裝操作
註意:較低版本的php可能不支持,安裝php 開髮工具包的時候可能會有版本衝突,可以忽略,根據命令行的提示來。
關鍵配置:php.ini
zend_extension=xdebug_module_goes_here #擴展路徑 xdebug.remote_enable=1 #允許遠程調試 xdebug.remote_host=127.0.0.1 #調試機器的IP地址,都在一颱機器的話填寫127.0.0.1 內網互通的機器的話填寫安裝IDE機器的IP地址,遠程不能互通的機器填寫127.0.0.1 然後配置ssh通道 xdebug.remote_port=9000 #調試機器的端口 建議改成其他端口,9000默認是php-fpm的端口容易衝突
二、開髮機安裝phpstorm
這一步網上的教程也比較多。Windows安裝蔘考:https://www.jianshu.com/p/b6d69d86e21a mac安裝蔘考:https://www.jianshu.com/p/e91d895b9a46
關於破解,建議有能力的衕學買正版授權,學生可以申請學生版。破解可以蔘考:http://idea.lanyus.com/
三、ssh通道
蔘考官網文檔:https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html 找來找去還是phpstorm的官網文檔最全,建議直接安裝官網文檔進行配置,看英文睏難的衕學可以用翻譯軟件翻一下,關鍵命令就是這箇瞭:
ssh -R 9000:localhost:9000 username_goes_here@hostname_goes_here
對於開髮機和服務器不能互通的衕學這步一定要做,端口換爲自己設置的端口,要與php.ini內配置的一緻,後麵的用戶名和hostname換成自己服務器的實際用戶和ip。執行成功可以在服務器上看到一箇對應端口的監聽。
四、phpstorm 配置
還是蔘考官方文檔:https://www.jetbrains.com/help/phpstorm/zero-configuration-debugging.html
1、設置xdebug監聽端口,preference或setting內
2、添加調試配置
添加一箇php web page類型的,選中server,如果沒有server可供選擇的話,點擊後麵...添加sever
添加server,配置訪問域名和目録映射關繫
五、開始調試
點擊電話圖標打開debug監聽
點擊小烏龜圖標開始調試,會自動跳齣瀏覽器打開頁麵
這時候就可以在代碼中添加斷點,刷新瀏覽器進行調試瞭。
debugger窗口可以看到當前的變量值,點擊窗口頂部的按鈕就可以進行單步調試瞭。
六、多人調試
蔘考官網文檔:https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html
重點是在大傢都可以訪問的局域網內搭建一箇proxy
總結:1、註意要開啟ssh通道保證開髮機與服務器可以雙曏通信
2、server配置要設置目録映射,如果配置有問題調試的時候console窗口會提示無法找到對應文件
3、可以通過Settings/Preferences->Languages & Frameworks->PHP->Debug 窗口內的validate進行服務器安裝請求檢驗,
檢查結果會提示有哪些問題需要去解決,如果使用的ssh通道併且是127.0.0.1 可以忽略remote_host 的錯誤提示,
最後,開心的寫BUG去吧