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(记录到文件,避免敏感信息泄露)。修改后重启Web服务器(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 updatesudo 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 MonologLogger;use MonologHandlerStreamHandler;$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需准确对应远程服务器项目路径与本地工作区,否则无法正确调试。