在 Ubuntu 上开启 PHP 日志(错误日志)通常分 PHP-FPM 和 Apache/Nginx + PHP 两种情况。下面按常见场景一步步说明。
先确认 PHP 版本:
php -v
示例(以 PHP 8.1 为例):
cd /etc/php/8.1/fpm/
主要配置文件:
/etc/php/8.1/fpm/php.ini
/etc/php/8.1/fpm/pool.d/www.conf
编辑:
sudo nano /etc/php/8.1/fpm/php.ini
确保以下配置存在并取消注释:
display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /var/log/php/php_errors.log
✅ 生产环境建议
display_errors = Off
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo systemctl restart php8.1-fpm
路径可能是:
/etc/php/8.1/apache2/php.ini
设置:
log_errors = On
error_log = /var/log/php/php_errors.log
sudo systemctl restart apache2
如果 PHP 报错但日志没有内容,检查:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
确认没有覆盖 php_admin_value:
php_admin_value[error_log] = /var/log/php/php_errors.log
php_admin_flag[log_errors] = on
tail -f /var/log/php/php_errors.log
创建测试文件:
<?php
error_log("PHP log test");
invalid_code();
访问页面后查看日志。
| 问题 | 原因 |
|---|---|
| 日志不生成 | 目录权限不对 |
| 页面空白 | display_errors=Off |
| 日志不更新 | 修改的是错误 php.ini |
| systemd 限制 | journalctl 里看不到 |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。