PHPStorm配置xdebug調試php代碼
V20160907
理由:
當項目越來越復雜,排錯就越發困難。
你以為代碼是這么運行的,但就是有未想到的功能導致流程變得不可捉摸。
此時我們需要調試,調試……
附注:PhpStorm 內建了 Zend Debugger 和 Xdebug 支持
步驟(windows):
- (服務端)安裝配置xdebug
- 下載適合當前PHP版本的dll文件,
官方下載地址:<u>http://xdebug.org/download.php</u>;
- 下載適合當前PHP版本的dll文件,
- 將下載的dll文件放入php安裝目錄下的擴展文件夾(通常為ext文件夾)中;
- 設置 php.ini 配置文件,配置xdebug
xdebug詳細配置參看官方配置文檔
設置內容如下:
; XDEBUG Extension
[xdebug]
; 擴展文件路徑
zend_extension = “E:/wamp/bin/php/php5.3.10/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll”
;zend_extension_ts = “d:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.dll”
;任意IDEKey,這里設定為PHPSTORM
xdebug.idekey = “PHPSTORM”
;xdebug.collect_return = On
; 追蹤
;xdebug.auto_trace = On
;xdebug.trace_output_dir = “d:/wamp/php/debuginfo”
; 效能評測器
;xdebug.profiler_enable = on
;xdebug.profiler_output_dir = “d:/wamp/php/debuginfo”
;xdebug.profiler_enable_trigger = on
;xdebug.profiler_output_dir = “E:/wamp/tmp”
;xdebug.profiler_output_name = cachegrind.out.%t.%p
; 遠程調試
xdebug.remote_enable = On ; 啟用遠程調試
xdebug.remote_mode = “req”
; 遠程主機的IP地址或域名
xdebug.remote_host = “localhost” ; 遠程服務器
xdebug.remote_port = 9001 ; 遠程服務器端口
xdebug.remote_handler = “dbgp” ;
;xdebug.remote_autostart = 1 ;
; xdebug 的日志文件
xdebug.remote_log = “/var/log/xdebug/xdebug.log” /**END**********************************************************/
重要:確保php.ini文件的有效性,如果使用一鍵安裝包,可能有多個php.ini文件,設置錯誤可能報“****waiting for incoming connection with ide key '*****'****”錯誤,筆者為這個問題曾排錯一晚上,復制以上代碼注意引號問題
- 重啟Apache服務器(修改php.ini文件后均需重啟服務器讓配置文件生效);
- (客戶端)安裝、配置PHPStorm(這里的配置以PHPStorm 8.0.2為準)
安裝PHPStorm(略);
配置xdebug
I 打開配置位置:file -> settings -> Languages & Frameworks -> PHP -> Debug
配置參數:一般配置xdebug 的調試端口(debug port), 設置為php.ini中設置好的遠程調試端口即可,默認
端口任意:默認9000,勾選幾個附屬選項;
[圖片上傳失敗...(image-588f69-1607395368150)]
II 打開配置位置:file -> settings -> Languages & Frameworks -> PHP -> Debug
-> DBGp Proxy
IDE Key 設置為php.ini中xdebug配置項的xdebug.idekey的值,Host設置為要調試的主機域名,Port端口,與php.ini中的端口保持一致;
[圖片上傳失敗...(image-1a8b7a-1607395368150)]
3) 添加調試服務器(如已添加可省略此步驟)
打開配置位置:file -> settings -> Languages & Frameworks -> PHP -> Servers
配置參數:配置主機名(執行項目的主機名)、端口、調試軟件,其中主機名按實際情況設置,調試軟件選擇xdebug;
備注:如果Servers選項未能顯示,請導入一個項目。
[圖片上傳失敗...(image-857190-1607395368150)]
4) 配置調試程序(php)
打開運行配置:Run -> Edit configurations… -> +(添加) -> PHP Web Application
設置服務器為剛添加的服務器,并設置開始的url(Start URL:即你要調試的php頁面,可在url后邊加上參數,如:user.php?act=login)和瀏覽器即可
PHPSTORM官方配置說明:
<u>http://blog.jetbrains.com/webide/2011/03/configure-php-debugging-in-phpstorm-2-0/</u>
3. 安裝瀏覽器調試插件(安裝步驟略)
火狐下安裝easy xdebug
谷歌下安裝 xdebug helper
官方插件說明:<u>http://www.jetbrains.com/phpstorm/marklets/</u>
- 走到這步配置基本就算完成,可以開始調試程序
在程序中設置斷點
在工具欄中選擇要調試的應用(位于軟件右上角的下拉列表)
點擊 Start Listen PHP Debug Connections 按鈕,即那個紅色的電話按鈕,讓其變成綠色,即開始監聽 PHP Debug 連接;
點擊工具欄中的 Debug(臭蟲圖標) 按鈕,或者從菜單中選擇 Run –> Debug,你就開始了 Debug 之旅…
附屬說明:根據斷點配置,或在打開 Debug URL 的過程中,或在 POST 之后,如果 PhpStorm 監聽到了 Debug 連接,就會立即切換到編輯器界面,并跳轉到設置的斷點處,瀏覽器端會等待 PhpStorm 的操作。不想調試了,記得剛剛那個電話按鈕嘛,再點一下,讓其變成紅色,就好了。
本文檔參考:
<u>http://blog.csdn.net/meegomeego/article/details/25731615</u>
<u>http://www.chenxuanyi.cn/xampp-phpstorm-xdebug.html</u>
相關問題:
1. xdebug是什么?
2. 判斷xdebug是否安裝?
方法1: 查看phpinfo頁面,搜索是否存在xdebug;
方法1:查看php擴展文件夾中是否存在xdebug擴展;
方法3:命令行執行“php.exe.path”/php -m
3. "waiting for incoming connection with ide key '*****'"的可能原因?
1. 配置文件錯誤(非常嚴重的低級錯誤),wamp等軟件的php.ini文件在Apache下面;
2. Phpstorm配置錯誤,例如端口號與ini文件不一致。
3. 沒有設置有效的斷點也會報這樣的錯誤,比方說我在B頁面設置了斷點,而要調試的頁面根本不走B頁面;
4. DBGp Proxy中的host設置錯誤;