PHP在CentOS中的调试方法
开启PHP错误报告并将错误记录到文件,是最基础的调试方式,适合快速定位语法或运行时错误。
php.ini中全局配置(推荐后者):ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL); // 报告所有错误
或在php.ini中设置:display_errors = On
log_errors = On
error_log = /var/log/php_errors.log
error_reporting = E_ALL
tail命令实时查看日志内容(需root权限):tail -f /var/log/php_errors.log
Xdebug是PHP专业调试工具,支持断点、变量监控、调用栈分析等功能,需配合IDE(如PhpStorm、VSCode)使用。
sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 7
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm # CentOS 8+
sudo yum-config-manager --enable remi-php74
sudo yum install php-xdebug
php.ini(或创建/etc/php.d/xdebug.ini),添加以下配置:[xdebug]
zend_extension=xdebug.so # 加载Xdebug扩展
xdebug.mode=debug # 启用调试模式
xdebug.client_host=127.0.0.1 # IDE所在主机IP
xdebug.client_port=9003 # 调试端口(默认9003,需与IDE一致)
xdebug.start_with_request=yes # 自动启动调试(可选:trigger/yes)
xdebug.idekey=PHPSTORM # IDE标识(如PHPSTORM、VSCode)
sudo systemctl restart httpdsudo systemctl restart nginx && sudo systemctl restart php-fpminfo.php文件(<?php phpinfo(); ?>),访问该文件,若页面包含“Xdebug” section则表示安装成功。File > Settings > Languages & Frameworks > PHP > Servers,点击“+”添加服务器:
127.0.0.1(或服务器IP)80(HTTP)或443(HTTPS)/home/user/project对应服务器/var/www/html)。Shift+F9)启动调试会话,访问应用即可触发断点。使用var_dump()和print_r()快速输出变量值,适合临时检查数据结构或简单调试。
$array = ['foo' => 'bar', 'baz' => 'qux'];
var_dump($array); // 输出变量类型和值
print_r($array); // 输出易读的数组结构
/var/log/php_errors.log有写入权限(sudo chown apache:apache /var/log/php_errors.log,Apache用户可能为www-data)。9003被占用,可修改php.ini中的client_port为其他端口(如9004),并同步更新IDE配置。display_errors(设为Off),避免敏感信息泄露,仅通过日志记录错误。