PHP日志的位置取决于你的运行环境(Apache/Nginx/PHP-FPM),常见路径如下:
/var/log/apache2/error.log,访问日志位于/var/log/apache2/access.log(需确保log_errors = On且error_log指向正确路径)。/var/log/nginx/error.log,访问日志位于/var/log/nginx/access.log(需配置fastcgi_pass指向PHP-FPM并开启日志)。/var/log/php-fpm.log或/var/log/php{version}-fpm.log(如/var/log/php7.4-fpm.log),可通过/etc/php/{version}/fpm/pool.d/www.conf中的error_log参数修改;访问日志默认关闭,需取消access_log注释并设置路径。PHP错误日志的配置主要通过php.ini文件完成,步骤如下:
找到php.ini文件:
根据运行环境选择对应路径:
/etc/php/{version}/apache2/php.ini/etc/php/{version}/cli/php.ini/etc/php/{version}/fpm/php.iniphp --ini命令快速定位。修改关键参数:
在php.ini中找到并修改以下参数(取消注释或新增):
error_reporting = E_ALL # 报告所有错误(开发环境推荐);生产环境可改为E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off # 关闭浏览器显示错误(防止敏感信息泄露)
log_errors = On # 启用错误日志记录
error_log = /var/log/php_errors.log # 自定义错误日志路径(需确保PHP进程有写入权限)
注:
error_reporting可根据需求调整,如E_ERROR | E_WARNING | E_PARSE(仅记录致命错误、警告和语法错误)。
重启Web服务:
配置生效后,重启对应的Web服务:
sudo systemctl restart apache2sudo systemctl restart nginx && sudo systemctl restart php{version}-fpm若使用PHP-FPM,需单独配置其日志(默认可能未开启):
/etc/php/{version}/fpm/pool.d/www.conf,修改以下参数:catch_workers_output = yes # 捕获worker进程的输出(便于调试)
error_log = /var/log/php-fpm/error.log # 错误日志路径
access_log = /var/log/php-fpm/access.log # 访问日志路径(可选)
php_admin_value[log_errors] = On # 强制开启错误日志
php_admin_value[error_reporting] = E_ALL # 错误级别
sudo systemctl restart php{version}-fpm使用logrotate工具自动管理日志文件,步骤如下:
/etc/logrotate.d/php,添加以下内容(以/var/log/php_errors.log为例):/var/log/php_errors.log {
daily # 每天轮转
missingok # 日志不存在时不报错
rotate 7 # 保留7天日志
compress # 压缩旧日志(节省空间)
notifempty # 日志为空时不轮转
create 640 root adm # 创建新日志文件并设置权限
sharedscripts # 所有日志处理完再执行脚本
postrotate
systemctl reload php{version}-fpm > /dev/null # 重启PHP-FPM(可选)
endscript
}
sudo logrotate -vf /etc/logrotate.d/php(-v显示详细过程,-f强制轮转)实时查看日志:
使用tail -f命令实时监控日志更新:
sudo tail -f /var/log/php_errors.logsudo tail -f /var/log/php-fpm/error.logsudo tail -f /var/log/nginx/access.log筛选特定日志:
使用grep命令过滤关键字(如“ERROR”):
sudo grep -E 'ERROR|WARN' /var/log/php_errors.log(筛选错误和警告信息)
通过以上步骤,你可以在Ubuntu中完成PHP日志的配置、管理与维护,确保日志记录符合需求(如开发调试或生产监控),并避免日志文件占用过多磁盘空间。