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实时查看。