PHPStorm設定xdebug工具除錯php(使用瀏覽器或不使用瀏覽器兩種方法)
PHP 設定除錯工具XDebug PHPStorm IDE - derrck - 部落格園 http://www.cnblogs.com/derrck/p/5195946.html
Xdebug: Documentation https://xdebug.org/docs/install
Xdebug: Documentation https://xdebug.org/docs/remote
1, 按照官方文件所得, 除錯的原理是, 當載入好xdebug工具的php執行php指令碼時, php程序就充當client端(注意瀏覽php網頁, 或手動php 1.php執行指令碼都會建立php程序), 而ide, vdebug, XDebugClient等就充當server端, php程序和這些"server"端就通過一套協議進行通訊除錯資訊.
xdebug是php拓展, 所有前提得配置好本地php環境
Windows7下的php環境配置教程_php技巧_指令碼之家 http://www.jb51.net/article/61507.htm
1, 上文中注意的是, 可能安裝好php後, 終端下執行php --ini, 可以檢視php.ini配置檔案路徑, 假如顯示沒有該檔案, 可以去php安裝目錄下, 按需要把, 把php.ini-development檔案重新命名為php.ini即可
1, phpstorm使用瀏覽器除錯php
都配置好環境後, 可以開始配置xdebug
先下載PHP擴充套件Xdebug https://xdebug.org, 可以複製自己的phpinfo貼上到https://xdebug.org/wizard.php
下載好之後放入php目錄的ext資料夾中, 然後設定php.ini, 在最後加上
下面是windows環境安裝xdebug拓展
zend_extension = C:\path\php\ext\php_xdebug-2.4.0rc4-5.6-vc11-x86_64.dll
xdebug.remote_enable =1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost (設定debug時, xdebug拓展(作client端)要連線的遠端server端, 這裡以本機作為client, server端為例)
xdebug.remote_mode = req
xdebug.remote_port = 9000 (設定debug時, xdebug拓展(作client端)要連線的埠. 注意可能會跟nginx, php-cgi程序埠衝突, 本文下方有衝突的解決方法)
xdebug.idekey=PHPSTORM
linux環境的xdebu拓展安裝方法請參照Xdebug: Documentation https://xdebug.org/docs/install
在電腦屬性中新增系統環境變數, linux上可以用export命令
XDEBUG_CONFIG="idekey=phpstorm remote_host=localhost profiler_enable=1"
然後重啟apache, 去設定phpstorm, 如下圖右方, 配置本地php根路徑
1. 進入File>Settings>PHP>Servers,這裡要填寫伺服器端的相關資訊:
name: localhost,
host: localhost,
port: 80,
debugger: XDebug
如果是自定域名則host設定自定域名, 如laravel5.io
2. 進入File>Settings>PHP>Debug,找到XDebug選項卡,port填9000 (設定debug時, ide(作server端)要監聽的埠. 注意可能會跟nginx, php-cgi程序埠衝突, 本文下方有衝突的解決方法)
3, 進入File>Settings>PHP>Debug>DBGp Proxy 填寫:
IDE key: phpStorm
host: localhost
port: 80
設定完畢,點OK退出。
下面設定使用瀏覽器除錯php的方法
點選單欄的Run>Edit Configurations… 在彈出的視窗中新增一個除錯配置:
點選左上角加號,選擇PHP Web Application
填寫完畢後,在程式碼裡設定斷點, 再開啟電話icno監聽, 點小甲殼蟲啟動除錯
再下個瀏覽器外掛, xdebug helper, 下載好之後點選項, IDE選PHPSTORM, 不想讓所以網頁顯示小甲蟲, 可以設定domain filter
下載地址:(注意, 本人使用php_xdebug-2.5.0-5.5-vc11-x86_64.dll版本時, 實測哪怕沒有該瀏覽器外掛也是可以除錯的)
Xdebug helper_Xdebug helper外掛_Xdebug helper下載_Xdebug helperchrome_酷容下載
http://www.mykurong.com/extensions/xdebughelper/#download
基本完事了, 除錯就點開電話圖示監聽, 設定好斷點, 點小甲蟲開啟除錯了, 重新整理頁面可見結果
或者手動在瀏覽器輸入網址, 讓執行自定義php指令碼, 只要在url後加上引數XDEBUG_SESSION_START=整數 即可, 猜測是用於指示php拓展xdebug工作.
如這個格式的url: http://localhost/data/1.php?XDEBUG_SESSION_START=1
埠衝突解決辦法:
注意如果是用瀏覽器除錯, 因為要執行nginx或Apache, 和php-cgi程序, 所有埠上可能與xdebug衝突, 導致報類似下面的錯:
windows下nginx根目錄logs目錄中的error.log日誌檔案可能有
CreateFile() "D:\Software\nginx-1.11.8/html/index.index" failed (2: The system cannot find the file specified), client: 127.0.0.1, server: localhost, request: "GET /index.index HTTP/1.1", host: "localhost"
或者
cmd下執行php-cgi.exe時報
Cannot bind/listen socket - [2] No such file or directory.Couldn't create FastCGI listen socket on port 127.0.0.1:9000
這可能是因為預設php-cgi和nginx間就是使用9000埠通訊, 所有可能會跟xdebug的埠衝突, 解決辦法是:
1, 工作管理員中結束所有nginx和php-cgi程序
2, nginx.conf配置檔案改成:
location ~ \.php$ {
root html;
#監聽9001, 非xdebug使用的9000埠即可
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
3, cmd下, 執行php-cgi.exe -b 127.0.0.1:9001 -c "D:\Software\php\php.ini" 讓php-cgi程序監聽9001埠跟nginx通訊
4, 雙擊執行或cmd下執行nginx.exe
5, 就可以繼續使用phpstorm在瀏覽器除錯php程式碼了
6, 當然也可以設定成xdebug和ide使用其他埠
2, phpstorm不使用瀏覽器除錯php
如果想用phpstome不通過瀏覽器, 直接除錯php指令碼, 可以在上述步驟基礎上, 繼續:實測, 可以不開啟"電話"按鈕進行監聽也行.