在 Debian 上开启 PHP 调试,通常分为几种常见场景。下面按最常用的情况给你一个清晰、可操作的说明。
先确认你用的是哪个 php.ini:
php --ini
常见路径:
/etc/php/8.x/cli/php.ini/etc/php/8.x/apache2/php.ini/etc/php/8.x/fpm/php.ini8.x 换成你的 PHP 版本,例如 8.1、8.2
编辑对应文件:
sudo nano /etc/php/8.x/apache2/php.ini
修改或取消注释以下内容:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
sudo systemctl restart apache2
sudo systemctl restart php8.x-fpm
sudo systemctl restart nginx
即使 display_errors 关闭,也可以看日志:
sudo tail -f /var/log/php_errors.log
如果文件不存在,可以手动创建:
sudo touch /var/log/php_errors.log
sudo chown www-data:www-data /var/log/php_errors.log
这是断点调试、单步执行的标准方案。
sudo apt update
sudo apt install php-xdebug
确认安装:
php -v
应看到类似:
with Xdebug v3.x
编辑配置文件:
sudo nano /etc/php/8.x/mods-available/xdebug.ini
推荐配置(本地开发):
zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.start_with_request=yes
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.x-fpm
| IDE | 说明 |
|---|---|
| VS Code | 安装 PHP Debug 插件 |
| PhpStorm | 自动识别 Xdebug |
| NetBeans | 启用 Xdebug |
VS Code launch.json 示例:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
CLI 默认不显示错误,可临时使用:
php -d display_errors=1 script.php
或:
php -l script.php # 语法检查
<?php
phpinfo();
浏览器访问,搜索:
display_errorsxdebug✅ php.ini 改错版本
✅ Apache / FPM 没重启
✅ error_log 没权限
✅ Xdebug 端口被防火墙拦截
你可以直接告诉我:
我可以给你精确到命令级别的配置方案。