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

Xdebug 完整配置指南:安裝、除錯、性能分析與遠程調試

     編輯:PHP 相關知識

一、安裝 Xdebug

預編譯模組安裝 (Windows)

  1. 從 官網 下載對應 PHP 版本、TS/NTS、VC 版本的 php_xdebug.dll。
  2. 將 DLL 放入 PHP 擴展目錄(如 C:/php/ext/)。
  3. 編輯 php.ini,添加:
zend_extension_ts = "C:/php/ext/php_xdebug.dll"
; 非線程安全版請用 zend_extension = "..."
  1. 重啟 Apache/NGINX,執行 php -m 或 phpinfo() 確認 xdebug 已載入。

Linux 系統編譯安裝

cd /usr/local/src
wget https://xdebug.org/files/xdebug-3.2.0.tgz
tar -zxvf xdebug-3.2.0.tgz
cd xdebug-3.2.0
/usr/local/php/bin/phpize
./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
make && make install

編譯成功後,將生成的 xdebug.so 路徑加入 php.ini:

zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so

二、核心功能配置參數詳解

1. 基礎特性

參數類型預設值說明
xdebug.default_enableBooleanOn錯誤發生時自動顯示堆疊追蹤。建議開啟。
xdebug.max_nesting_levelInteger100限制函數遞歸深度,防止無限遞歸導致腳本中止。

2. 堆疊追蹤

參數類型預設值說明
xdebug.dump_globalsBoolean1是否顯示超全局變數($_SERVER, $_POST 等)內容。
xdebug.dump_onceBoolean1只在錯誤首次發生時輸出超全局變數,而非每次錯誤都輸出。
xdebug.dump_undefinedBoolean0是否輸出未定義的超全局變數值。
xdebug.show_exception_traceInteger0捕獲到異常時仍強制顯示異常追蹤(設為 1)。
xdebug.show_local_varsInteger0堆疊追蹤中顯示所有局部變數(含未初始化),資訊量大,預設關閉。

範例:xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT 將只輸出指定的 $_SERVER 索引。

3. 性能分析

參數類型預設值說明
xdebug.profiler_enableInteger0啟用性能分析,生成可被 KCacheGrind/QCacheGrind 讀取的快照文件。不可用 ini_set() 修改。
xdebug.profiler_output_dirString/tmp分析文件輸出目錄,需 PHP 進程有寫入權限。不可用 ini_set() 修改。
xdebug.profiler_output_nameStringcachegrind.out.%p輸出文件命名格式,支援 %p (PID), %r (請求數) 等佔位符。
xdebug.profiler_appendInteger0設為 1 時,新請求追加寫入同一文件而非覆蓋。

4. 遠程調試

參數類型預設值說明
xdebug.remote_enableBoolean0啟用遠程調試,嘗試連接 IDE 客戶端。
xdebug.remote_autostartBoolean0忽略 GET/POST/COOKIE 觸發條件,每次請求都嘗試發起調試會話。
xdebug.remote_hostStringlocalhostIDE 客戶端所在主機 IP 或主機名。
xdebug.remote_portInteger9000調試通訊端口,建議保持預設,避免衝突。

三、推薦生產/開發環境配置範例

[xdebug]
zend_extension = "/usr/local/php/lib/php/extensions/xdebug.so"
xdebug.default_enable = 1
xdebug.max_nesting_level = 256

; 開發環境建議開啟
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = "192.168.1.100"
xdebug.remote_port = 9000

; 性能分析按需開啟
xdebug.profiler_enable = 0
xdebug.profiler_output_dir = "/tmp/xdebug_profiler"
xdebug.profiler_output_name = "cachegrind.out.%H%R"

; 堆疊追蹤細節
xdebug.show_local_vars = 1
xdebug.dump_globals = 1
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_HOST
xdebug.dump.POST = *

四、常用分析工具

  • WebGrind:PHP 寫的 Xdebug 分析文件 Web 界面,適合快速查看。
  • KCacheGrind (Linux) / QCacheGrind (Windows):圖形化分析調用圖、耗時統計。
  • PhpStorm / VS Code:內建遠程調試支持,配合 xdebug.remote_autostart=1 即可零配置斷點調試。

五、注意事項

  1. Xdebug 3.x 版本配置鍵名有變更(如 xdebug.mode=debug,profile),升級時請閱讀遷移指南。
  2. 生產環境嚴禁開啟 profiler_enable 或 remote_autostart,會嚴重影響性能並暴露安全風險。
  3. 遠程調試時,確保服務器防火牆開放 9000 端口入站,或使用 SSH 隧道轉發。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved