Ubuntu上PHP如何进行调试
导读:Ubuntu上PHP调试的完整流程(以Xdebug为核心) 一、前置准备:确认PHP环境 在开始调试前,需明确PHP运行环境(如Web服务器是Apache/Nginx、PHP版本(如8.1/8.2)、SAPI类型(cli/fpm/apach...
Ubuntu上PHP调试的完整流程(以Xdebug为核心)
一、前置准备:确认PHP环境
在开始调试前,需明确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)
二、安装Xdebug扩展
Ubuntu推荐通过APT包管理器安装Xdebug(自动处理依赖):
sudo apt update
sudo apt install php-xdebug # 根据PHP版本自动安装对应包(如php8.2-xdebug)
安装完成后,Xdebug会自动添加到mods-available
目录,需通过phpenmod
启用:
sudo phpenmod xdebug
三、配置Xdebug与PHP集成
编辑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
四、IDE配置(以VS Code为例)
- 安装扩展:在VS Code扩展商店搜索“PHP Debug”(作者:Felix Becker),点击安装。
- 创建调试配置:按下
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端口。
五、开始调试
- 设置断点:在VS Code中打开PHP文件,点击行号左侧设置断点(红点)。
- 触发调试:
- 浏览器方式:在项目URL后添加
?XDEBUG_SESSION_START=PHPSTORM
(如http://localhost/test.php?XDEBUG_SESSION_START=PHPSTORM
),访问页面即可触发断点。 - IDE方式:右键点击PHP文件,选择“Debug”→“Start Debugging”,然后在浏览器中访问页面。
- 浏览器方式:在项目URL后添加
- 调试操作:当代码执行到断点时,VS Code会暂停,可通过顶部工具栏进行**Step Over(F10)、Step Into(F11)、Step Out(Shift+F11)、Continue(F5)**等操作,同时可查看变量值、调用栈等信息。
六、常见问题排查
- 端口冲突:若9003端口被占用,修改
xdebug.client_port
为其他端口(如9004),并同步更新IDE配置。 - 路径映射错误:确保
pathMappings
中的服务器路径与本地项目路径一致,否则无法正确显示变量。 - Xdebug未加载:创建
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
实时查看。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上PHP如何进行调试
本文地址: https://pptw.com/jishu/728325.html