在 Ubuntu 上调试 PHP 配置和代码,通常可以从PHP 配置检查、错误日志、调试工具几个方面入手。下面按常见场景给你一个清晰指南。
php -v
php -m # 查看已加载模块
如果是 Web 环境(Apache / Nginx + PHP-FPM):
php --ini
会显示:
php -i | less
或在 Web 目录建一个文件:
<?php
phpinfo();
访问该页面查看配置。
找到 php.ini(如 /etc/php/8.1/cli/php.ini 或 fpm/php.ini)
确保以下配置:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php/php_errors.log
修改后重启服务:
# PHP-FPM
sudo systemctl restart php8.1-fpm
# Apache
sudo systemctl restart apache2
# Nginx 一般只重启 PHP-FPM
error_reporting(E_ALL);
ini_set('display_errors', 1);
tail -f /var/log/php/php_errors.log
如果没有该文件:
sudo mkdir -p /var/log/php
sudo touch /var/log/php/php_errors.log
sudo chown www-data:www-data /var/log/php/php_errors.log
tail -f /var/log/apache2/error.log
tail -f /var/log/nginx/error.log
php your_script.php
php -l your_script.php
sudo apt install php-xdebug
或:
pecl install xdebug
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
重启 PHP:
sudo systemctl restart php8.1-fpm
launch.json 示例:{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
然后在代码里打断点,浏览器访问即可。
✅ php.ini 改了没生效?
→ CLI 和 FPM 是两套 php.ini
✅ 页面空白?
→ 看 error_log,不是看浏览器
✅ Nginx 502?
→ PHP-FPM 没启动或 socket 配置错
error_log + tail -flog_errors,关闭 display_errors如果你能告诉我:
我可以给你更精确的一步步配置示例。