Xdebug 是 PHP 最強大的除錯與分析擴展,配合 Zend Studio 可實現斷點、單步執行、變數檢視、堆疊追蹤等 IDE 級除錯體驗。本文記錄 PHP 5.5 環境下的完整安裝配置步驟。
php -v 與 php -i | grep "Thread Safety" 輸出選擇正確的 DLL(TS/Non-TS、VC11/VC14、32/64-bit)。ext 目錄,重命名為 php_xdebug.dll。[xdebug]
zend_extension="php_xdebug.dll"
xdebug.remote_enable = On
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.collect_assignments = 1
xdebug.collect_vars = 1
xdebug.remote_autostart = 0 ; 建議關閉自動啟動,改由瀏覽器插件控制
xdebug.remote_connect_back = 1
xdebug.show_local_vars = 1
xdebug.show_exception_trace = 0
php -m | grep xdebug 或瀏覽 phpinfo() 頁面,確認出現 Xdebug 區塊。9000(與 php.ini 一致)JIT 模式說明
•off:關閉瀏覽器觸發除錯
•localhost:僅localhost訪問時啟動
•any:任意 IP 訪問皆啟動(生產環境禁用)
•prompt:彈窗詢問是否除錯
避免每次請求都進入除錯模式,安裝 Firefox 插件 Easy Xdebug(或 Chrome 的 Xdebug Helper)。
xdebug.remote_autostart = 0(關閉自動啟動)。XDEBUG_SESSION_START Cookie 發送請求,Zend Studio 自動彈出除錯視窗。| 現象 | 可能原因 | 解決方向 |
|---|---|---|
| Zend Studio 無反應 | Port 被佔用/防火牆阻擋 | 檢查 9000 埠、關閉防火牆或改用其他 Port |
| 斷點不生效 | 路徑映射錯誤 | Preferences → PHP → Servers → Path Mapping 正確對應專案路徑 |
| 變數顯示亂碼 | 編碼不一致 | 確認 php.ini default_charset = UTF-8、專案編碼 UTF-8 |
| 遠端伺服器除錯 | 需 SSH Tunnel | 本機 ssh -R 9000:localhost:9000 user@server 建立反向通道 |
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "/tmp/xdebug_profiler"
xdebug.profiler_output_name = "cachegrind.out.%p"
產出的 cachegrind.out.* 可用 KCacheGrind (Linux) / QCacheGrind (Windows) / Webgrind (Web) 視覺化分析效能瓶頸。
完成上述配置後,即可在 Zend Studio 中享受現代化 PHP 除錯體驗:設定斷點 → 瀏覽器觸發 → 單步執行 → 即時變數檢視 → 呼叫堆疊分析。