PHP在Debian中的代码调试方法
错误日志配置
调试前需确保错误信息可见(开发环境)或正确记录(生产环境)。修改php.ini
文件(通过php --ini
查找路径),设置:
display_errors = On
、error_reporting = E_ALL | E_STRICT
(直接显示错误);display_errors = Off
、log_errors = On
、error_log = /var/log/php_errors.log
(记录到文件,避免敏感信息泄露)。sudo systemctl restart apache2
或sudo systemctl restart php-fpm
)。代码级调试工具
var_dump()
/print_r()
:在关键位置输出变量类型和值(如var_dump($user->name)
),快速定位变量异常;die()
/exit()
:在代码中插入中断点(如die('Reached here')
),终止后续执行,缩小问题范围;try-catch
块:捕获异常并记录详细信息(如try { ... } catch (Exception $e) { error_log($e->getMessage()); }
),避免程序崩溃并保留错误上下文。Xdebug是PHP最强大的调试扩展,支持断点、变量监控、函数跟踪等功能,需结合IDE(如PhpStorm、VSCode)使用。
通过Debian软件包管理器安装(适配PHP版本,如PHP 8.1):
sudo apt update
sudo apt install php8.1-xdebug
编辑php.ini
文件(路径同上),添加以下配置:
[Xdebug]
zend_extension=xdebug.so # 加载Xdebug扩展
xdebug.mode=debug # 启用调试模式
xdebug.client_host=127.0.0.1 # IDE所在主机IP(本地调试为127.0.0.1)
xdebug.client_port=9003 # 调试端口(默认9003,需与IDE一致)
xdebug.start_with_request=yes # 自动启动调试(可选:trigger/yes)
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,
"pathMappings": {
"/var/www/html": "${workspaceFolder}" # 映射远程项目路径到本地
}
}
]
}
http://localhost/index.php
),调试器会在断点处暂停。除基础error_log()
外,推荐使用Monolog(第三方日志库)实现结构化日志:
composer require monolog/monolog
;use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::DEBUG));
$log->info('User logged in', ['user_id' => 123]); // 记录带上下文的日志
日志文件路径可根据需求调整(如/var/log/app.log
)。display_errors
),生产环境关闭并记录到日志(log_errors
);xdebug.client_port
为其他端口(如9004),并同步更新IDE配置;pathMappings
需准确对应远程服务器项目路径与本地工作区,否则无法正确调试。