在 Ubuntu 上让 PHP-FPM 显示/记录错误信息,通常从以下几个方面配置(以常见 PHP 7.x / 8.x 为例):
php --ini
# 或
php-fpm -i | grep "Loaded Configuration File"
通常路径类似:
/etc/php/8.1/fpm/php.ini
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-fpm/php-error.log
⚠️ 生产环境建议:
display_errors = Offlog_errors = On
PHP CLI 和 PHP-FPM 是不同的 php.ini:
# FPM 用的
/etc/php/8.1/fpm/php.ini
# CLI 用的
/etc/php/8.1/cli/php.ini
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
如果页面空白:
fastcgi_params 是否包含:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
tail -f /var/log/php8.1-fpm.log
tail -f /var/log/php-fpm/php-error.log
如目录不存在:
mkdir -p /var/log/php-fpm
chown www-data:www-data /var/log/php-fpm
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
# 或
sudo systemctl restart apache2
在 PHP 文件顶部加:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
| 现象 | 原因 |
|---|---|
| 页面空白 | display_errors 关闭 |
| 500 错误 | PHP 语法或 FPM 崩溃 |
| 不记录日志 | error_log 路径无权限 |
| CLI 有错 FPM 没有 | 改错 php.ini |
如果你愿意,可以告诉我:
我可以给你精确配置。