PhpStorm XDebug 遠程調試


現在我們自己公司的各種開發和測試服務器,都是使用阿里雲的服務器。一些PHP的項目,無法在本地搭建完整的環境,在外網服務器上調試更方便定位問題。發現網上沒有完整的關於如何配置PHPStorm和XDebug遠程調試的資料,自己配置的過程遇到一些問題,寫出來給大家做一個參考。

 

演示環境

本地開發環境:Mac Pro + PHPStorm 9.0

服務器的環境:Ubuntu 14 LTS + PHP 5.5 + XDebug 2.2.3

不管是Windows還是其它的Linux的版本,具體的配置差不多,一樣可以作為一個參考。

 

准備工作

1. 開發環境上安裝 PHPStorm,服務器上安裝好PHP

2. 在服務端安裝XDebug,Ubuntu上 apt-get install php5-xdebug

3. 安裝完XDebug后,在php.ini里面加入如下的XDebug配置,配置如下。

[xdebug]

zend_extension=/usr/lib/php5/20121212/xdebug.so

xdebug.remote_enable=1

xdebug.remote_host=127.0.0.1

xdebug.remote_port=7777

xdebug.idekey=PHPSTORM 

上面每行解釋一下

zend_extension,這個配置為xdebug的安裝路徑,這個根據自己具體的安裝的情況填寫。

remote_enable 和 remote_host 分別配置為1和127.0.0.1

remote_port,這個默認值為9000,如果這個端口被其它進程占用了就需要換一個。我這里因為配置了nginx和php-fpm,9000端口已經被占用,所以我換了一個7777。注意,這里的這個端口要和PHPStorm中的設置保持一致,如下圖:

idekey設置為PHPSTORM,這個字符串在啟動調試的時候要用到,后面再解釋這個。

4. 驗證一下配置,使用phpinfo看一下輸出,查看輸出里面是否有xdebug的內容。注意,如果之前有配置過比如zend debugger之類其它的調試工具,需要先從php.ini里面把其它的調試配置去掉,不能同時配置兩個調試工具。

 

開始調試

調試的過程如下:

1. 第一步,先在PhpStorm里面開始監聽調試請求,圖標里面的從紅色變成綠色,表示開始監聽了。

點擊變為如下:

2. 建立好斷點。

3. 從開發環境上,創建一個到服務器上的SSH連接通道,Linux/Mac下使用下面的命令:

ssh -R 9000:localhost:9000 root@服務器的IP地址

注意這個寫法,一個是本地端口地址,一個是遠程的端口地址,默認情況下都是9000。但是如果之前修改過,那么端口需要換。比如我這里端口改成了7777,命令就應該是如下的樣子:

ssh -R 7777:localhost:7777 root@21.23.222.113

注意,第3步一定要在第1步之后,也就是說建立這個通道之前,必須先開始監聽。

如果開發環境是windowds,那么需要使用putty去建立這個連接通道。具體的方法參考:https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel

4. 激活服務端的調試器

通過在請求里面帶上 XDEBUG_SESSION 參數,並且把參數值設置為之前XDebug里面配置的“idekey”的值,就可以激活服務端的調試。

例如,可以在POST或者GET參數里面加上 XDEBUG_SESSION=PHPSTORM,服務端就會啟動調試了。 比如我們要調試 http://www.abc.com/test.php,那么訪問鏈接http://www.abc.com/test.php?XDEBUG_SESSION=PHPSTORM 就可以啟動調試了。

具體的原理是這樣的,服務端收到請求后,XDebug會檢查參數里面的XDEBUG_SESSION值是否等於“idekey”的值,如果相等,那么就說明需要調試,否則就不調試。這個參數也可以設置在Cookie里面。為了調試方便,可以把下面的兩端腳本作為鏈接收藏到書簽欄,每次如果要調試就調用第一段腳本在Cookie里面寫入XDEBUG_SESSION參數,如果要停止調試,那么就調用第二段腳本移除XDEBUG_SESSION參數的值。

javascript:(function() {document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';})()

javascript:(function() {document.cookie='XDEBUG_SESSION='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()

我自己的書簽欄就是這么設置的:

5.開始調試

一切都弄好后,直接在瀏覽器里面訪問服務端的頁面,PHPStorm就會檢測到調試連接並進入調試狀態。

注意,需要先配置好一個部署,把本地文件和服務端的文件做好映射,不然會提示文件映射錯誤。

 

推薦參考鏈接

https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel

https://confluence.jetbrains.com/display/PhpStorm/Zero-configuration+Web+Application+Debugging+with+Xdebug+and+PhpStorm#Zero-configurationWebApplicationDebuggingwithXdebugandPhpStorm-4.Activatedebuggeronserver


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM