在phpStorm中使用xdebug調試

1 環境說明

在mac下搭建的lnmp環境,可以參考:
Mac搭建lnmp環境
http://blog.csdn.net/alex_my/article/details/53818143

nginx中的網站配置:

fastcgi_pass   127.0.0.1:9000

環境均使用brew安裝,其中xdebug被安裝到:

/usr/local/opt/php56-xdebug/xdebug.so

php的配置中也有指向

/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini

2 配置php.ini

/usr/local/etc/php/5.6/php.ini

[xdebug]
xdebug.remote_enable =1 
xdebug.remote_handler = "dbgp" 
xdebug.remote_host = "localhost"        # 調試的IDE所在的地址
xdebug.remote_port = 9001               # 調試的IDE所用的端口
xdebug.remote_mode = "req" 
xdebug.idekey="PHPSTORM"

xdebug.remote_mode:

req: 在PHP程序開始執行的時候,xdebug與IDE建立連接
jit: 在PHP程序執行到斷點處或者遇到Error的時候,xdebug才與IDE建立連接

需要注意的是,這裏不要再添加以下配置,會出現警告: 已經加載了xdebug.so

zend_extension="/usr/local/opt/php56-xdebug/xdebug.so" 

還有一個重要的是,如果你用的是nginx,並且是默認配置,一般9000端口都是被使用的。
按照網上其它教程做而xdebug無法斷點的原因就是使用了以下配置:

xdebug.remote_port = 9000

重啓php-fpm

killall php-fpm
php-fpm -D

3 配置phpStorm

打開 phpstorm–Preferences–Languages & Frameworks – PHP
點擊Debug, 填寫以下內容

Xdebug -- Debug port: 9001 # 和php.ini中的xdebug.remote_port保持一致

打開Debug–DBGp Proxy填寫以下內容

IDE key: phpStorm
Host: localhost         # 要調試的網站地址, 如127.0.0.1, site.com
Port: 80                # 要調試的網站端口
  • 打開網站工程,IDE右上角,點擊Edit Configurations..
  • 點擊彈出框左側的+號。
  • 選擇PHP Web Application
  • 此時左側多了一列PHP Web Application – Unnamed (改名爲start)
  • 在右側 – Configuration – Server 右側的 …
  • 在彈出框Servers左側點擊+號,填寫以下內容
Name: start2        # 隨意名稱
Host: localhost     # 網站地址,與Debug--DBGp Proxy相同
Port: 80            # 網站端口,與Debug--DBGp Proxy相同
Debugger: Xdebug

一些就緒後,在IDE的右上側,綠色三角形右側,有一個臭蟲按鈕,打好斷點,就可以點擊使用了

4 xdebug工作原理說明

  • IDE中安裝了一個遵循BGDp協議的Xdebug插件, 稱爲xdebug-a
  • 調試模式下,IDE中的xdebug-a創建服務,監聽端口: 9001(在phpStorm中設置的)
  • IDE在當前url後面加上了XDEBUG_SESSION_START參數
  • php服務器中的xdebug模塊,稱爲xdebug-b, 接收到帶有XDEBUG_SESSION_START的請求後,會進入到調試模式
  • xdebug-b會以協議(BGDp)向xdebug-a的服務建立連接,提供調試服務。
  • php.ini中配置的xdebug.remote_host:xdebug.remote_port是xdebug-a的地址和端口

    xdebug-a創建服務時,這個端口不能被其它進程佔用了。

TOP

發佈了118 篇原創文章 · 獲贊 68 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章