在 Ubuntu 上调试 PHP,常见方式有以下几种,按使用频率和学习成本从易到难说明:
适合:看报错、定位语法/逻辑错误
php --ini
找到 Loaded Configuration File,例如:
/etc/php/8.1/cli/php.ini
/etc/php/8.1/apache2/php.ini
修改内容:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
ini_set('display_errors', 1);
error_reporting(E_ALL);
# Apache
tail -f /var/log/apache2/error.log
# Nginx + PHP-FPM
tail -f /var/log/nginx/error.log
tail -f /var/log/php8.1-fpm.log
适合:断点、单步执行、变量查看
sudo apt update
sudo apt install php-xdebug
查看是否安装成功:
php -m | grep xdebug
编辑 php.ini(以 CLI 或 FPM 为例):
[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
重启服务:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
安装插件:PHP Debug
launch.json 示例:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
然后:
适合:脚本、定时任务
php -d xdebug.mode=debug your_script.php
或单步执行:
php -a
error_log(print_r($var, true));
查看:
tail -f /var/log/php_errors.log
确认改的是正确的 php.ini(CLI 和 FPM 不同)
client_host 是否正确如果你告诉我:
我可以给你更精确的配置示例。