Ubuntu 上 PHP 日志的默认路径与查看方法
在 Ubuntu 上折腾 PHP 开发,最头疼的莫过于定位日志文件了——有时候明明代码报错了,却不知道错误信息写在哪儿。其实,日志路径很大程度上取决于你用的是哪种 Web 服务器和 PHP 处理方式。下面先梳理一下最常见的几种情况。
常见日志路径
- 使用 Apache:PHP 错误通常直接写入 Web 服务器的错误日志,路径是
/var/log/apache2/error.log;访问日志则在/var/log/apache2/access.log。 - 使用 Nginx + PHP-FPM:PHP-FPM 的错误日志常见为
/var/log/php-fpm.log或/var/log/php/7.x-fpm.log(其中 7.x 为你的 PHP 版本);部分发行包或自定义配置也可能使用/var/log/php-fpm/error.log。Nginx 自身的错误与访问日志分别为/var/log/nginx/error.log、/var/log/nginx/access.log。 - 使用 PHP-CLI:若
php.ini中启用了文件日志(log_errors=On),错误会写入error_log指定的路径;未设置时通常输出到标准错误。
需要提醒的是,以上路径会因安装方式、发行版打包与自定义配置而有所差异,所以请以实际环境为准。别急着直接套用,最好先确认一下。
如何快速确认你的日志路径
- 查看 PHP-FPM 配置:在
/etc/php/7.x/fpm/php-fpm.conf或/etc/php/7.x/fpm/pool.d/www.conf中查找error_log、access.log指令,即可看到实际路径。 - 查看 PHP 运行时配置:执行
php -i | grep error_log(CLI)或在 Web 环境中用phpinfo()查看error_log的值。 - 查看 Web 服务器配置:
- Apache:在
/etc/apache2/apache2.conf或虚拟主机配置中查看ErrorLog、CustomLog。 - Nginx:在
/etc/nginx/nginx.conf或站点配置中查看error_log、access_log。
- Apache:在
- 若仍不确定,可在系统中按文件名检索:
sudo find /var/log -name "php*.log"。
以上方法基本能准确定位当前生效的日志文件路径,多试几次就能摸清规律。
常用查看与监控命令
- 实时查看日志尾部:
- Apache:
sudo tail -f /var/log/apache2/error.log - Nginx:
sudo tail -f /var/log/nginx/error.log - PHP-FPM:
sudo tail -f /var/log/php-fpm.log或sudo tail -f /var/log/php/7.x-fpm.log
- Apache:
- 过滤关键字:
grep -i "error|warning" /var/log/php-fpm.log - 按 IP 统计访问量前 10(Nginx 示例):
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
这些命令能帮你快速定位错误,也能在分析访问情况时省不少力气。
日志轮转与清理建议
- 使用 logrotate 管理日志轮转(示例:
/etc/logrotate.d/php-fpm):/var/log/php-fpm/*.log { daily missingok rotate 7 compress notifempty create 640 root adm } - 修改配置后,可以用
sudo logrotate -f /etc/logrotate.conf测试;系统通常会按日自动轮转。 - 清理日志时,优先使用
truncate -s 0 文件路径清空内容,避免直接删除文件导致句柄未释放;必要时再重启对应服务(如systemctl restart php7.x-fpm)。
养成定期轮转的习惯,既控制了日志体积,也降低了磁盘被撑爆的风险。