apache - 为什么当文件error.log不存在时Apache停止
问题描述
当某些路径设置错误或在我的情况下 - 文件不存在时,为什么 Apache 服务器停止工作?这是我的配置:
<VirtualHost *:80>
ServerName toma-coreshop.webbuild.com
DocumentRoot /home/projects/toma/toma-coreshop
<Directory /home/projects/toma/toma-coreshop>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /home/projects/toma/toma-coreshop/logs/error.log
</VirtualHost>
现在error.log
文件不存在,整个服务器都掉线了。其他域也不起作用。为什么会出现这种行为?也欣赏任何有用的链接。先感谢您!
解决方案
首先,如果errorlog
指令中指定的目录路径存在,Apache 2.4 将创建一个日志文件。
仅当目录丢失时才会出现此问题。
在 Apache(重新)启动期间,它会检查配置是否存在错误。同样可以手动完成,当配置被修改错误,但 Apache 没有重新启动,因此仍在运行:
# apachectl -t
(2)No such file or directory: AH02291: Cannot access directory '/var/www/example.com/nologs/' for error log of vhost defined at /etc/httpd/conf/plesk.conf.d/vhosts/example.com.conf:10
AH00014: Configuration check failed
strace 显示在重启过程中,Apache 检查所有指定的错误日志目录:
# strace /usr/sbin/httpd
...
stat("/etc/httpd/logs/", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
...
stat("/var/www/example.com/nologs/", 0x7ffff84f3140) = -1 ENOENT (No such file or directory)
write(2, "(2)No such file or directory: AH"..., 203(2)No such file or directory: AH02291: Cannot access directory '/var/www/example.com/nologs/' for error log of vhost defined at /etc/httpd/conf/plesk.conf.d/vhosts/example.com.conf:10
) = 190
write(2, "AH00014: Configuration check fai"..., 36AH00014: Configuration check failed
) = 36
似乎能够访问错误日志对于 Apache 正常执行非常重要。同时,Apache 也不冒昧地创建日志目录的完整路径。
其他服务,例如 PHP-FPM,显示相同的行为
推荐阅读
- excel - 如何在excel中复制一个范围,然后使用宏调整大小并粘贴到word中
- wpf - 从资源字典中嵌入资源
- react-native - 在 iOS 和 Android 中使用相同的代码但垂直边距的结果不同的 React Native 应用程序
- azure-service-fabric - NT AUTHORITY\NETWORK SERVICE - 不同的语言 (FABRIC_E_CERTIFICATE_NOT_FOUND)
- c++ - 为什么 C++ 20 中没有枚举概念?
- google-apps-script - 尝试在 Google Script 中创建新的 Stripe 客户时出现无效的 customer.address 对象错误
- android - 材料设计运动动画
- architecture - 了解 32 位浮点数
- python - Python在抓取中查找元素
- c# - 访问库项目中的配置对象(appsettings.json)