日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php项目使用xdebug远程调试

發(fā)布時間:2025/3/19 php 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php项目使用xdebug远程调试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

0. 目的、原理和調(diào)用流程

訪問測試環(huán)境的頁面,在本地開發(fā)機(jī)打斷點調(diào)試。相當(dāng)流弊的功能,方便代碼排查原因。

原理:

運(yùn)行xdebug需要客戶端IDE(phpstorm)、遠(yuǎn)程服務(wù)器配合,首先是客戶端配置好端口,發(fā)送debug請求,請求會通過瀏覽器或者IDE的http請求,攜帶特定的參數(shù)發(fā)送到服務(wù)端,服務(wù)端收到請求后,發(fā)現(xiàn)這是一個xdebug請求,則與IDE建立dpgp連接,當(dāng)遇到斷點時候,返回調(diào)試信息給IDE

  • 服務(wù)器的IP是10.0.1.2,端口80上有HTTP
  • IDE位于未知IP上,因此xdebug.remote_connect_back設(shè)置為1
  • IDE偵聽端口9000,因此xdebug.remote_port設(shè)置為9000
  • 發(fā)出HTTP請求,Xdebug從HTTP頭中檢測IP地址
  • Xdebug連接到端口9000上檢測到的IP(10.0.1.42)
  • 調(diào)試運(yùn)行,提供HTTP響應(yīng)

調(diào)用流程:

以上內(nèi)容摘自storyflow的博客,感謝原作者。

好的,搞清楚原理之后,把上面的Ip、端口號這些統(tǒng)統(tǒng)忘記,以免跟下面演示的IP、端口搞混。 (搞不清楚就算了,反正也要忘記 ^ _ ^ )
現(xiàn)在 我們正式開始一段愉快的學(xué)習(xí)之旅吧。

1.機(jī)器環(huán)境:

  • 本地開發(fā)機(jī)windows,只安裝了phpstorm。
    注意,我本地開發(fā)機(jī)并沒有安裝php.exe等其他任何開發(fā)工具。
  • 測試服務(wù)器linux, IP為172.16.249.179, 安裝了php 5.6.0,安裝目錄在 /opt/remi/php56/root,
    服務(wù)器也安裝了php-fpm/nginx等所有開發(fā)依賴環(huán)境。
  • 此處假設(shè)訪問域名為 http://test.php.com, 程序已部署到測試服,項目能正常訪問。
  • 2.Linux服務(wù)器安裝xdebug擴(kuò)展

    2.1.下載對應(yīng)版本的xdebug擴(kuò)展包

    • 最新版本下載地址:https://xdebug.org/download.php
    • 歷史版本下載地址:https://xdebug.org/download/historical
      我下載的是xdebug-2.5.4.tgz這個版本。

    2.2.xdebug-2.5.4.tgz上傳到服務(wù)器的/opt目錄下,解壓并進(jìn)入目錄:

    tar-zxvf xdebug-2.5.4-tgz cd /opt/xdebug-2.5.4

    2.3.執(zhí)行php安裝擴(kuò)展包的命令

    注意:執(zhí)行此命令的時候,/phpize前面的路徑得替換為你機(jī)器上的php真實安裝路徑。

    /opt/remi/php56/root/bin/phpize

    我在執(zhí)行此命令后報錯,原因是沒有安裝php-devel開發(fā)工具:

    于是先安裝php-dev工具:

    #列出安裝包的所有版本 yum list | grep php-devel #找到對應(yīng)版本的安裝包,執(zhí)行安裝 yum install php56-php-devel.x86_64

    操作過程如下圖:

    2.4.重新執(zhí)行命令

    注意:執(zhí)行此命令的時候,/phpize前面的路徑得替換為你機(jī)器上的php真實安裝路徑。

    /opt/remi/php56/root/bin/phpize

    2.5. 編譯xdebug擴(kuò)展包

    注意:執(zhí)行此命令的時候,/php-config前面的路徑得替換為你機(jī)器上的php真實安裝路徑。

    ./configure --enable-xdebug --with-php-config=/opt/remi/php56/root/bin/php-config

    執(zhí)行成功,再執(zhí)行:

    make && make install

    2.6. 安裝成功后,去php modules路徑下看看,是否有xdebug.so文件:

    3. Linux服務(wù)器配置php.ini

    3.1. 在php.ini文件中追加參數(shù):

    注意:xdebug.remote_port端口號為9009,是指你本地開發(fā)機(jī)的監(jiān)聽端口號,當(dāng)然也可以改為其他端口號。

    zend_extension="xdebug.so" xdebug.remote_enable=On #本地開發(fā)機(jī)端口,測試服務(wù)器會講debug信息發(fā)送到此端口 xdebug.remote_port=9009 xdebug.idekey=PHPSTORM #如果開啟此remote_connect_back,則忽略xdebug.remote_host的參數(shù) xdebug.remote_connect_back = 1 xdebug.remote_handler = dbgp xdebug.auto_trace = 1 xdebug.remote_log = /tmp/xdebug.log

    3.2. 配置轉(zhuǎn)發(fā)端口9009

    因為debug session通訊數(shù)據(jù)是從linux服務(wù)器發(fā)送到你本地開發(fā)機(jī),所以需要配置ssh轉(zhuǎn)發(fā)通道(ssh tunnel)
    ssh工具我用的是MobaXterm軟件,轉(zhuǎn)發(fā)通道配置如下圖,你也可以使用CRT, xshell等其他工具,原理是相同的。

    sshCRT配置大概是這樣的:

    • 遠(yuǎn)程主機(jī)上鍵入telnet命令 telnet 127.0.0.1 9009 檢查是否能夠訪問9009 端口。
    • 如果有端口沖突可以調(diào)整。
    • 如果啟動了防火墻firewall-cmd --state,記得開放此端口。

    4.本地開發(fā)機(jī)phpStorm配置

    4.1. phpStorm debug配置端口

    4.2. dbgp proxy配置

    4.3. servers配置映射路徑path mappings

    4.4. 開啟、關(guān)閉監(jiān)聽

    5. chrome瀏覽器安裝xdebug-helper插件

    5.1. 擴(kuò)展包下載

    https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

    5.2. 啟動xdebug

    安裝后你可能需要重啟瀏覽器,此插件才能正常運(yùn)行。

    蟲子為綠色即為運(yùn)行中:

    此插件的作用是在cookie中設(shè)值:

    6. 打斷點調(diào)試

    在登錄方法打斷點,瀏覽器訪問http://test.php.com,可以進(jìn)入斷點:

    6.postman設(shè)置cookie方式

    如果只是通過postman方式調(diào)用接口,則需要在postman的cookie中,先添加域名:

    然后在對應(yīng)域名下添加cookie: XDEBUG_SESSION=PHPSTORM;

    主要參考資料:
    https://segmentfault.com/a/1190000016366104
    https://juejin.cn/post/6844903728193994766
    https://www.cnblogs.com/ding-daisy/p/10142023.html

    總結(jié)

    以上是生活随笔為你收集整理的php项目使用xdebug远程调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。