PhpStorm XDebug 遠程調試

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

 

演示環境php

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

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

無論是Windows仍是其它的Linux的版本,具體的配置差很少,同樣能夠做爲一個參考。瀏覽器

 

準備工做服務器

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

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

3. 安裝完XDebug後,在php.ini裏面加入以下的XDebug配置,配置以下。ide

[xdebug]php-fpm

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

相關文章
相關標籤/搜索