Ubuntu上PHP调试的常用方法
php.ini文件(通过php --ini命令查找路径),将display_errors = Off改为display_errors = On,并确保error_reporting = E_ALL(显示所有错误)。重启Web服务器(Apache用sudo systemctl restart apache2,Nginx+PHP-FPM用sudo systemctl restart php{版本号}-fpm && sudo systemctl restart nginx)后,错误信息会直接显示在浏览器中。php.ini中设置log_errors = On和error_log = /var/log/php_errors.log(自定义日志路径),错误信息会写入该文件。使用tail -f /var/log/php_errors.log实时查看日志,避免敏感信息泄露给用户。print_r()/var_dump():在代码中插入print_r($variable)或var_dump($variable),输出变量值或数组结构。适合快速检查变量状态,但需手动删除调试代码。error_log('调试信息', 0)将自定义信息写入error_log文件,适合跟踪代码执行流程。Xdebug是PHP强大的调试扩展,支持断点、变量查看、堆栈跟踪等功能,需结合IDE(如PhpStorm、VSCode)使用。
通过Ubuntu包管理器安装(推荐):
sudo apt-get update
sudo apt-get install php-xdebug # 根据PHP版本调整,如php8.2-xdebug
或通过PECL安装(需提前安装php-pear和php-dev):
sudo pecl install xdebug
编辑php.ini文件,添加以下配置(根据PHP版本调整路径):
[Xdebug]
zend_extension=xdebug.so # 自动加载扩展(包管理器安装时无需指定路径)
xdebug.mode=debug # 启用调试模式
xdebug.client_host=127.0.0.1 # 调试客户端地址(本地为127.0.0.1)
xdebug.client_port=9003 # 调试端口(默认9003,需与IDE一致)
xdebug.start_with_request=yes # 自动启动调试(或设为"trigger"通过Cookie触发)
xdebug.idekey=PHPSTORM # IDE标识(如PHPStorm、VSCode)
重启Web服务器使配置生效。
.vscode/launch.json文件,添加以下配置:{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"stopOnEntry": false,
"log": true,
"pathMappings": {
"/var/www/html": "${workspaceFolder}" // 映射项目路径(服务器路径:本地路径)
}
}
]
}
http://localhost/index.php),代码执行到断点时会暂停。display_errors(设为Off),避免泄露敏感信息。xdebug.mode设为off)。sudo ufw allow 9003。