Ubuntu上PHP調試的完整流程(以Xdebug為核心)
在開始調試前,需明確PHP運行環境(如Web服務器是Apache/Nginx、PHP版本(如8.1/8.2)、SAPI類型(cli/fpm/apache2))??赏ㄟ^以下命令查看關鍵信息:
php -v # 查看PHP版本
php --ini # 查找php.ini文件路徑
ls /etc/php/$(php -v | cut -d. -f1,2)/mods-available/ # 查看可用擴展(含xdebug)
Ubuntu推薦通過APT包管理器安裝Xdebug(自動處理依賴):
sudo apt update
sudo apt install php-xdebug # 根據PHP版本自動安裝對應包(如php8.2-xdebug)
安裝完成后,Xdebug會自動添加到mods-available目錄,需通過phpenmod啟用:
sudo phpenmod xdebug
編輯php.ini文件(路徑由php --ini確定),在文件末尾添加以下配置(務必根據實際端口調整):
[Xdebug]
; 加載Xdebug擴展(路徑通常自動填充,無需手動指定)
zend_extension=xdebug.so
; 啟用調試模式(支持多種模式,debug為核心)
xdebug.mode=debug
; 客戶端主機(IDE所在機器IP,本地調試用127.0.0.1)
xdebug.client_host=127.0.0.1
; 調試端口(默認9003,需與IDE一致)
xdebug.client_port=9003
; IDE標識(如PHPStorm/VSCode,需與IDE配置一致)
xdebug.idekey=PHPSTORM
; 自動啟動調試(可選,方便開發時無需手動觸發)
xdebug.start_with_request=yes
保存后重啟Web服務:
# Apache
sudo systemctl restart apache2
# Nginx + PHP-FPM
sudo systemctl restart php8.2-fpm # 版本替換為實際PHP版本
sudo systemctl restart nginx
Ctrl+Shift+P,輸入“Debug: Open launch.json”,選擇“PHP”環境,添加以下配置:{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"log": true,
"stopOnEntry": false,
"pathMappings": {
"/var/www/html": "${workspaceFolder}" // 映射項目路徑(服務器路徑:本地路徑)
}
}
]
}
F5啟動調試會話,VS Code會監聽9003端口。?XDEBUG_SESSION_START=PHPSTORM(如http://localhost/test.php?XDEBUG_SESSION_START=PHPSTORM),訪問頁面即可觸發斷點。xdebug.client_port為其他端口(如9004),并同步更新IDE配置。pathMappings中的服務器路徑與本地項目路徑一致,否則無法正確顯示變量。info.php文件(<?php phpinfo(); ?>),訪問后在頁面搜索“Xdebug”,若未出現則說明擴展未正確加載,需檢查php.ini路徑和zend_extension配置。若不想使用IDE,可通過日志查看調試信息。在php.ini中添加:
xdebug.log=/var/log/xdebug.log # 日志文件路徑
xdebug.log_level=7 # 日志級別(7=所有信息)
重啟Web服務后,執行PHP腳本時,Xdebug會將調試信息寫入日志文件,可通過tail -f /var/log/xdebug.log實時查看。