在 Ubuntu 上设置 PHP 的日志级别,主要取决于你使用的是 PHP-CLI、PHP-FPM 还是 Apache + mod_php。下面按常见情况说明。
PHP 日志相关主要有两个地方:
php.ini 中的错误报告级别error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /var/log/php/php_errors.log
error_reporting 控制常见级别:
E_ALL:所有错误和警告(开发推荐)E_ERROR | E_WARNING:只记录严重错误和警告E_NOTICE:关闭 notice(生产常见)示例(生产环境):
error_reporting = E_ERROR | E_WARNING | E_PARSE
路径示例(版本可能不同):
/etc/php/8.1/fpm/php.ini
修改:
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php/php-fpm.log
然后:
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo systemctl restart php8.1-fpm
配置文件:
/etc/php/8.1/apache2/php.ini
修改后重启:
sudo systemctl restart apache2
配置文件:
/etc/php/8.1/cli/php.ini
查看当前级别:
php -i | grep error_reporting
在 PHP 代码里设置:
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', '1');
或只针对某个虚拟主机(Apache):
<VirtualHost *:80>
php_value error_reporting E_ALL
php_value log_errors On
</VirtualHost>
常见位置:
/var/log/php/php-fpm.log/var/log/apache2/error.logerror_log 指定的路径实时查看:
tail -f /var/log/php/php-fpm.log
开发环境
error_reporting = E_ALL
display_errors = On
生产环境
error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
log_errors = On
如果你告诉我:
我可以给你一份精确可复制的配置。