阅读量:15
Ubuntu下PHP代码调试指南(以Xdebug+Visual Studio Code为例)
1. 安装Xdebug扩展
通过Ubuntu包管理器快速安装Xdebug(适配当前PHP版本):
sudo apt-get update
sudo apt-get install php-xdebug
安装完成后,Xdebug会自动集成到PHP环境中,无需手动指定扩展路径(系统会自动识别xdebug.so的位置)。
2. 配置php.ini文件
2.1 找到正确的php.ini文件
PHP的配置文件路径因运行模式(CLI/WEB)而异,通过以下命令快速定位:
php --ini
输出结果会显示Loaded Configuration File(如/etc/php/8.2/apache2/php.ini或/etc/php/8.2/cli/php.ini),需分别配置以确保CLI和WEB模式均生效。
2.2 添加Xdebug配置
在php.ini文件末尾添加以下配置(关键参数说明见注释):
[Xdebug]
; 启用Xdebug扩展
zend_extension=xdebug.so
; 设置调试模式为"debug"(支持断点、变量查看等功能)
xdebug.mode=debug
; 指定IDE监听的主机地址(本地调试设为127.0.0.1)
xdebug.client_host=127.0.0.1
; 指定IDE监听的端口(默认9003,避免与旧版Xdebug冲突)
xdebug.client_port=9003
; 自动启动调试会话(无需手动触发,访问页面即进入调试)
xdebug.start_with_request=yes
; 可选:设置IDE标识(如PHPStorm用"PHPSTORM",VS Code可自定义)
xdebug.idekey=VSCODE
⚠️ 注意:若使用PHP-FPM,需重启PHP-FPM服务;若使用Apache,需重启Apache服务。
3. 重启Web服务器
配置生效后,需重启对应服务使Xdebug生效:
- Apache:
sudo systemctl restart apache2 - Nginx+PHP-FPM:
sudo systemctl restart php8.2-fpm # 替换为你的PHP版本 sudo systemctl restart nginx
4. 配置IDE(以Visual Studio Code为例)
4.1 安装PHP Debug扩展
打开VS Code扩展市场(左侧边栏Extensions图标),搜索PHP Debug(作者:Felix Becker),点击Install安装。
4.2 创建launch.json文件
- 点击左侧
Run and Debug图标(或按Ctrl+Shift+D); - 点击顶部
create a launch.json file,选择PHP; - 在生成的
launch.json中,替换为以下配置(适配Xdebug的9003端口和项目路径):
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}" // 将服务器路径映射到本地项目目录
}
}
]
}
⚠️ 注意:
pathMappings需根据实际项目路径调整(如/var/www/html是服务器上的项目目录,${workspaceFolder}是本地的VS Code项目目录)。
5. 开始调试
- 设置断点:在VS Code中打开需要调试的PHP文件,在代码行左侧点击(或按
F9)设置断点; - 启动调试会话:点击
Run and Debug面板的绿色三角形(或按F5),选择Listen for Xdebug; - 触发调试:在浏览器中访问PHP页面(如
http://localhost/test.php),代码执行到断点时会自动暂停; - 调试操作:
- 查看变量值:悬停鼠标或点击
Variables面板; - 单步执行:
F10(步入)、F11(步出)、Shift+F11(跳出); - 继续执行:
F5。
- 查看变量值:悬停鼠标或点击
常见问题排查
- 断点不生效:检查
xdebug.start_with_request=yes是否开启,pathMappings是否正确,以及IDE是否监听了正确端口(9003); - 端口冲突:若9003端口被占用,可修改
php.ini中的xdebug.client_port(如改为9004),并同步更新IDE配置; - Xdebug未加载:运行
php -m | grep xdebug,若无输出则说明扩展未加载,需检查php.ini中的zend_extension路径是否正确。