Ubuntu 上 Apache 没有日志(access.log / error.log 为空或不存在),常见原因和排查方法如下:
如果你用的是 虚拟主机(vhost),但没写日志配置:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
# 缺少下面两行
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
✅ 解决:加上 ErrorLog 和 CustomLog
Ubuntu 默认日志在:
/var/log/apache2/access.log
/var/log/apache2/error.log
如果你执行过:
a2dissite 000-default.conf
而又没启用其他站点,请求可能根本没进 Apache。
检查:
sudo netstat -tulnp | grep :80
请求在到达 Apache 前就被拦了 → 不会有任何日志
LogLevel warn
有些错误不会记录。
✅ 调试时可改为:
LogLevel debug
例如:
Deny from all
某些配置可能直接返回 403,但仍应有 access 日志。
ls -l /var/log/apache2/
如果文件不存在:
sudo touch /var/log/apache2/access.log
sudo chown www-data:adm /var/log/apache2/access.log
你可能看错了文件:
ls -lh /var/log/apache2/
修改配置后必须:
sudo apache2ctl configtest
sudo systemctl restart apache2
# 1. 看配置
grep -R "ErrorLog|CustomLog" /etc/apache2/
# 2. 看进程
ps aux | grep apache2
# 3. 看端口
ss -tulnp | grep :80
# 4. 手动访问
curl -I localhost
如果你愿意,可以把下面信息发我,我可以精准判断:
/etc/apache2/sites-enabled/ 内容apache2ctl -S 输出我可以一步一步帮你定位。