| PHP 版本 | VC 版本 | 線程安全 | Xdebug 文件名示例 |
|---|---|---|---|
| 8.2 | VS16 (VC15) | TS / NTS | php_xdebug-3.2.0-8.2-vs16-nts-x86_64.dll |
| 8.1 | VS16 | TS / NTS | php_xdebug-3.1.6-8.1-vs16-ts-x64.dll |
| 8.0 | VS16 | TS / NTS | ... |
| 7.4 | VS15 | TS / NTS | ... |
| 7.3 | VS15 | TS / NTS | ... |
| 7.2 | VS15 | TS / NTS | ... |
| 7.1 | VS14 | TS / NTS | ... |
| 7.0 | VS14 | TS / NTS | ... |
| 5.6 | VS11 | TS / NTS | php_xdebug-2.5.5-5.6-vc11-nts.dll |
| 5.5 | VS11 | TS / NTS | ... |
| 5.4 | VS9 | TS / NTS | ... |
| 5.3 | VC9 | TS / NTS | php_xdebug-2.1.0-5.3-vc6.dll (舊版) |
| 5.2 | VC6 | TS / NTS | php_xdebug-2.1.0-5.2-vc6.dll |
原則:PHP 版本、VC 編譯器、TS/NTS **三者必須完全匹配**。用 php -i | findstr "Compiler\|Thread Safety" 確認。
php -i 輸出自動推薦)C:\php\ext\php_xdebug.dll (或你的 PHP ext 目錄); 必須用 zend_extension 載入,不能用 extension=
zend_extension = "C:\php\ext\php_xdebug.dll"
[xdebug]
; 模式:開發調試用 develop,debug,coverage,gcstats,profile,trace
xdebug.mode = develop,debug,profile
; 客戶端 (IDE) 連接配置
xdebug.client_host = "127.0.0.1"
xdebug.client_port = 9003 ; Xdebug 3 默認 9003 (舊版 9000)
xdebug.start_with_request = yes ; 自動啟動調試 (trigger 可配合瀏覽器插件)
xdebug.discover_client_host = true ; 嘗試自動檢測客戶端 IP (Docker/WSL 有用)
; 日誌 (排查連接問題必開)
xdebug.log = "C:\php\xdebug.log"
xdebug.log_level = 7
; 性能分析輸出
xdebug.output_dir = "C:\php\xdebug_profiler"
xdebug.profiler_output_name = "cachegrind.out.%p.%R"
; 代碼覆蓋率
xdebug.coverage_enable = 1
; 變量顯示深度/長度
xdebug.var_display_max_depth = 5
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
; IDE Key (PhpStorm 默認 PHPSTORM)
xdebug.idekey = "PHPSTORM"
Xdebug **必須**在 OPcache **之前**載入,且不能與 Zend Optimizer 共存。
; 正確順序
zend_extension = "C:\php\ext\php_xdebug.dll"
zend_extension = "C:\php\ext\php_opcache.dll" ; 如果啟用 OPcache
; 註釋掉 Zend Optimizer
; [Zend]
; zend_extension_manager.optimizer_ts = "..."
; zend_extension_ts = "..."
# CLI 驗證
php -v
# 應顯示: with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans
# 或瀏覽 phpinfo() 頁面搜索 xdebug
Settings → PHP → CLI Interpreter → 選擇你的 php.exe → 確認 Xdebug 版本顯示正確
Settings → PHP → Debug → Xdebug → Debug port: 9003 (與 xdebug.client_port 一致)
Settings → PHP → Servers → 新增:
localhostlocalhost80 (或你的 Nginx/Apache 端口)C:\project\myapp → Absolute path on server: /var/www/html (或同樣的 Windows 路徑)PHPSTORM| 現象 | 原因 | 解決 |
|---|---|---|
| php -m 顯示 Xdebug 但 phpinfo 無 | CLI 和 Web 用不同 php.ini | 檢查 php --ini 和 phpinfo() 的 Loaded Configuration File |
| 斷點不生效 / 變量不可見 | 路徑映射錯誤 | 嚴格核對 Server 映射,區分大小寫、符號鏈接 |
| 「Waiting for incoming connection with ide key 'PHPSTORM'」 | IDE 未監聽 / 端口衝突 / 防火牆 | PhpStorm 開啟 Listening,檢查 9003 端口佔用,關閉防火牆測試 |
| Docker/WSL 環境無法連接 | client_host 需指向宿主機 | xdebug.client_host = host.docker.internal (Docker Desktop) 或宿主機 IP |
| 性能極差 | xdebug.mode 包含 profile/trace 且未關閉 | 生產/開發非調試時設 xdebug.mode = off 或僅 develop |
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
},
"ignore": ["**/vendor/**/*.php"]
}
]
}
xdebug.mode = off 或註釋 zend_extensionxdebug.mode 不包含 develop (會在錯誤頁顯示變量)Xdebug 3 配置核心在於:**版本三要素匹配 → zend_extension 載入順序 → client_port=9003 → IDE 路徑映射 → 瀏覽器插件觸發**。掌握這條主線,配合 xdebug.log 排查 90% 問題。開發環境常駐 develop,debug,生產環境徹底禁用。