Ubuntu 上 Apache 日志为空(通常是 /var/log/apache2/access.log 或 error.log 没有内容或大小为 0),常见原因和排查方法如下:
最常见原因。
localhost 但 Apache 监听的是 127.0.0.1:8080systemctl status apache2
若未运行:sudo systemctl start apache2
✅ 验证方式:
curl http://127.0.0.1
再看日志是否变化。
Apache 可能把日志写到了别的地方。
检查虚拟主机配置:
grep -R "CustomLog" /etc/apache2/
grep -R "ErrorLog" /etc/apache2/
示例:
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
确认 APACHE_LOG_DIR 是 /var/log/apache2
LogLevel warn
这不会阻止 access 日志,但 error 日志可能很少。
例如:
CustomLog access.log combined env=!dontlog
若请求被排除,就不会记录。
Apache 运行用户(通常是 www-data)无法写日志。
检查:
ls -l /var/log/apache2/
若权限异常:
sudo chown -R www-data:adm /var/log/apache2
sudo chmod 750 /var/log/apache2
有时 logrotate 后 Apache 没重新打开文件。
解决:
sudo systemctl reload apache2
某些 Ubuntu + Apache 组合中:
journalctl查看:
journalctl -u apache2
即使 Apache 在跑,请求没进来。
检查:
sudo ufw status
ss -tulnp | grep 80
systemctl status apache2
curl http://127.0.0.1
ls -l /var/log/apache2/
grep -R "CustomLog|ErrorLog" /etc/apache2/
journalctl -u apache2
如果你愿意,可以把以下信息发我,我能精确判断:
apache2ctl -S 输出我可以直接帮你定位是哪一条原因。