首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Xdebug 3 + PhpStorm / VS Code 遠端除錯完整配置指南

     編輯:PHP 綜合知識

為什麼升級 Xdebug 3?

  • 效能大幅提升(預設關閉 profiling、tracing,按需啟用)。
  • 配置簡化:xdebug.mode 取代十幾個舊參數。
  • 支援 PHP 8.0+、match、Attributes、JIT 除錯。
  • 雲端原生:xdebug.client_host 自動偵測、xdebug.discover_client_host。

1. 安裝

# Linux (PECL)
pecl install xdebug
# 或 apt-get install php8.2-xdebug

# Docker (推薦)
# Dockerfile
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

2. 核心配置 php.ini / xdebug.ini

; === 必填 ===
zend_extension=xdebug.so

; 模式:debug, develop, trace, profile, coverage, gcstats
; 開發環境建議
xdebug.mode=debug,develop

; 連線目標(IDE 監聽地址)
xdebug.client_host=host.docker.internal  ; Docker 內連宿主機
xdebug.client_port=9003                  ; Xdebug 3 預設 9003 (舊版 9000)

; 自動啟動(瀏覽器擴充套件觸發更佳,見下)
xdebug.start_with_request=trigger        ; trigger / yes / no

; 日誌除錯配置
xdebug.log=/var/log/xdebug.log
xdebug.log_level=7

模式詳解

模式用途效能影響
debug斷點、變數檢查、堆疊中(僅連線時)
develop變數顯示增強、錯誤頁面美化低
trace函數呼叫追蹤寫檔高(大量 I/O)
profile效能分析 (Cachegrind 格式)高
coverage程式碼覆蓋率極高(僅測試時開啟)

3. IDE 端配置

PhpStorm (內建零配置)

  1. Preferences → PHP → Debug:Port 9003、勾選 Can accept external connections。
  2. Preferences → PHP → Servers:新增 Server,Host=你的域名/IP,Port=80/443,**勾選 Path mappings** 將專案根目錄映射到伺服器絕對路徑(如 /var/www/html)。
  3. 工具列電話圖示 Start Listening for PHP Debug Connections 亮綠燈。
  4. 瀏覽器安裝 Xdebug Helper (Chrome/Firefox/Edge),設定 IDE Key = PHPSTORM,點擊除錯圖示變綠。
  5. 在程式碼打斷點,重新整理頁面 → PhpStorm 彈出除錯視窗。

VS Code (PHP Debug 擴充套件)

// .vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003,
      "pathMappings": {
        "/var/www/html": "${workspaceFolder}"
      },
      "hostname": "0.0.0.0",
      "log": true
    }
  ]
}
  1. 安裝 PHP Debug (xdebug.php-debug)。
  2. F5 啟動偵錯,狀態列顯示 Listening on 9003。
  3. 瀏覽器 Xdebug Helper 設定 IDE Key = VSCODE。

4. 觸發除錯的三種方式

方式適用場景啟動參數
瀏覽器擴充套件Web 請求、API、AJAXCookie XDEBUG_SESSION=PHPSTORM
URL 參數快臨時測試?XDEBUG_SESSION_START=PHPSTORM
CLI 環境變數命令列腳本、單元測試、Queue WorkerXDEBUG_SESSION=1 php artisan queue:work
xdebug_break()程式碼硬性中斷無需外部觸發

5. 進階:多伺服器 / Kubernetes / 遠端主機

  • DBGp Proxy:xdebug.client_host 指向 Proxy,Proxy 轉發至開發者 IDE。適合團隊共用測試環境。
  • SSH Tunnel:ssh -R 9003:localhost:9003 user@remote 將遠端 9003 映射回本機。
  • K8s Sidecar:Sidecar 容器跑 dbgp-proxy,開發者連線至 Service。

6. 常見問題排查

現象原因解決
斷點不生效/跳過Path Mapping 錯誤檢查 Server 設定的絕對路徑映射
連線超時防火牆阻擋 9003伺服器開放 9003 輸出;本機開放 9003 輸入
變數顯示 unavailableOpCache 優化移除變數opcache.optimization_level=0 或關閉 OpCache(僅開發)
Docker 內無法連宿主機Linux 無 host.docker.internal--add-host=host.docker.internal:host-gateway (Docker 20.04+)
多請求只第一次停xdebug.start_with_request=yes 但 IDE 未持續監聽改用 trigger + 瀏覽器擴充套件

7. 生產環境安全

  • 嚴禁開啟 debug 模式:洩露堆疊、變數、環境變數,極大安全風險。
  • 生產 xdebug.mode=off 或完全不載入擴展。
  • 若需線上排查:xdebug.mode=trace + 限制 IP + 短時間 + 立即關閉。

原文《利用Xdebug和Komodo調試PHP應用程序》重構,全面升級至 Xdebug 3 + PhpStorm/VS Code 現代工具鏈,補充 Docker/K8s/SSH 遠端場景與安全守則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved