前言
如需瞭解Vagrant下CentOS的box安裝Xdebug並開啓phpstorm監聽瀏覽器或postman或eolinker遠程調試全過程,請點我
由於配置過程涉及IP、域名、項目目錄,因此統一在這裏先約定了,以便對照
服務器IP:192.168.1.8(假設這是公網IP)
客戶機IP:192.168.1.16(也就是開發機)
項目名稱:kol_server
項目所在客戶機目錄:E:\wwwroot\kol_server
項目所在服務器目錄:/home/wwwroot/kol_server
vagrant目錄映射:E:\wwwroot=》/home/wwwroot/
項目域名:admin.kol.test.com
項目php版本:7.3
準備工作
登錄先登錄服務器,切換用戶到root用戶
安裝xdebug
選擇需要下載的xdebug擴展源碼包:https://xdebug.org/download
這裏我們假設一個場景:
環境用的是lnmp.org所提供的lnmp1.6版一鍵安裝包,PHP版本用的是php-7.3.11
下載的擴展源碼包我打算放在/home下,我打算安裝的xdebug擴展版本是Xdebug 2.9.5,那下載後源碼包的路徑是:
/home/xdebug-2.9.5.tgz
考慮到操作的便捷性此處用一句話命令囊括安裝的命令:
cd /home && wget https://xdebug.org/files/xdebug-2.9.5.tgz && tar zxvf xdebug-2.9.5.tgz && cd xdebug-2.9.5 && phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
至此擴展已經安裝完成
現在開啓剛安裝的擴展
編輯php.ini文件
vi /usr/local/php/etc/php.ini
在末尾加上
特別注意不是extension=xdebug.so是zend_extension=xdebug.so,否則會報Xdebug MUST be loaded as a Zend extension
zend_extension=xdebug.so
重啓php,如果你用的也是lnmp,那就執行
lnmp restart
最後驗證擴展是否成功安裝並生效,執行以下命令:
php -m
看到如下截圖表示已經成功:
修改Xdebug配置
默認配置可參考官方配置項,編輯php.ini文件
vi /usr/local/php/etc/php.ini
在末尾加上你需要的配置,不加則使用默認,如需要修改遠程端口,則在文檔的末尾添加一行:
xdebug.idekey = "vagrant"
xdebug.default_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler="dbgp"
重啓php,如果你用的也是lnmp,那就執行
lnmp restart
配置防火牆,開啓9001端口
編輯防火牆iptables配置
vi /etc/sysconfig/iptables
添加
-A INPUT -p tcp -m tcp --dport 9001 -j ACCEPT
如果IDC服務商存在額外的防火牆,如阿里雲需要在IDC服務商的防火牆控制面板開啓9001端口的TCP訪問,授權訪問的IP填寫你當前網絡環境下的公網IP
配置phpstorm
添加ssh配置
添加部署
設置目錄映射
配置遠程php CLI解釋器,php language level選擇php版本7.3,然後如下圖點擊…按鈕
根據下圖點擊
選擇ssh配置,php7.3解釋器所在路徑,正常情況下如果沒有做多php版本的服務器,只要根據下圖選擇即可然後點擊ok:
選擇debugger extension,也就是xdebug.so路徑
類似這樣的地址:/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
點擊ok後可以看到下圖,記錄點擊ok
其中綠框部分顯示的是目錄映射信息,無需修改,此處顯示可能每個人有所不同,phpstorm會根據deployment中的設置自動生成,切記一般是不需要修改的,其他信息也都不需要修改點擊ok保存即可!
設置xdebug遠程訪問端口
配置DBGp Proxy
Host是服務器IP
添加網站服務器
Name是Server名稱,可以隨便填寫;
Host爲你調試項目是訪問的IP或者域名.
假設你的訪問路徑爲“http://192.168.1.102/project/…”,那這裏配置成192.168.1.102。
假設你的訪問路徑爲“http://www.abc.com/index.php”,那這裏配置成www.abc.com;
Port爲你Web服務器的端口,一般爲80。
除此之外還需要配置項目路徑的映射(path mapping),將項目的根目錄以及public目錄映射到Vagrant服務器中的絕對路徑。
設置Run/Debug Configurations
上圖所示的server選擇之前添加的kol_server,選擇你調試用的瀏覽器,默認chrome,其他信息無需修改,點擊ok保存即可
下載Xdebug helper瀏覽器擴展
debug調試
開啓debug監聽
設置斷點
假設kol_server項目是通過thinkphp開發的,最簡單的測試方式在入口文件index.php中設置斷點如下圖:
使用瀏覽器調試
假設之前設置的調試瀏覽器是chrome,那麼通過chrome訪問kol_server項目域名admin.kol.test.com,默認情況下插件開啓的是debug模式,如需切換可以點擊瀏覽器如下圖所示圖標,進行切換。
正常模式下一旦訪問phpstorm即可響應來自xdebug的入站響應
使用eolinker或者postman調試
需要在header請求頭部添加Cookie
XDEBUG_SESSION=vagrant
如下圖:
請注意,關於debugger配置驗證顯示無法通過,請忽略,無法通過原因可以參考如下解釋:
因爲目前大多數項目部署入口都是在類似public的目錄下,如Thinkphp項目和Laravel項目,當配置映射時需要映射到整個項目目錄,而debugger配置驗證走的是整個項目的根目錄,正常情況下該目錄是沒有直接URL訪問權限的,所以是不可能通過的。當然如果是一些個別老項目,入口就在根目錄下,那完全可以通過debugger配置驗證。
整理記錄不易,如果對您有用,請不要吝嗇點贊!!
如需瞭解Vagrant下CentOS的box安裝Xdebug並開啓phpstorm監聽瀏覽器或postman或eolinker遠程調試全過程,請點我