Apache (httpd) 无法启动,因为“无法打开错误日志”

Posted

技术标签:

【中文标题】Apache (httpd) 无法启动,因为“无法打开错误日志”【英文标题】:Apache (httpd) Wont start because "could not open error log" 【发布时间】:2017-09-11 22:19:07 【问题描述】:

好吧,伙计们,我很难过。我在 vm 上安装 centos 7.2,安装 httpd,将其作为服务启用,然后启动它 然后创建并编辑如下配置文件

<VirtualHost *:80>
ServerAdmin admin@mydomain.com
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
#ErrorLog /var/www/mydomain.com/error.log
#CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

所以.. 当我取消注释“ErrorLog”时,我认为这是正确的,并且目录“/var/www/mydomain.com/”中有一个名为 error.log 的文件 Httpd.service 不想启动,报错:

(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mydomain.com/error.log.
AH00015: Unable to open logs

我尝试对 error.log 文件、apache:apache 和 root:root 以及该站点的用户执行 chown,但这不起作用。 我还确保为 www 设置了 755 目录,因此 error.log 文件应该能够被它打开。请帮帮我

【问题讨论】:

更新:所以我确实发现它与启用 selinux 有关。我使用 setenforce 0 然后尝试:“systemctl start httpd.service”,它立即启动。那么问题来了,我该如何解决呢? 【参考方案1】:

原来错误和访问日志需要放在/var/log/httpd/而不是原来的位置。

【讨论】:

【参考方案2】:

指向error.log的路径中的所有目录都必须为apache用户或组设置可执行和可读位,以便apache能够写入日志文件。

为了调试权限,你可以 su 到 apache 用户,然后尝试触摸文件:

sudo -u apache touch /var/www/mydomain.com/error.log

【讨论】:

我确实触摸了文件 /var/www/mydomain.com/error.log 另外,作为 root:输入 sudo -u apache -i 给我这个错误“此帐户当前不可用” 它不可用,因为 httpd 也在运行,但它唯一运行是因为我将这些部分注释掉了。所以我当然还有问题 此账号当前不可用 报错是因为apache用户没有shell。对不起。试试sudo -u apache touch /var/www/mydomain.com/error.log 刚试过,没用,在 apache 中出现同样的错误,因为无法打开日志 /var/www/mydomain.com/error.log

以上是关于Apache (httpd) 无法启动,因为“无法打开错误日志”的主要内容,如果未能解决你的问题,请参考以下文章

安装apache服务出错,无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题

Windows 上的 Apache httpd 服务器无法启动

wamp下部署ssl,https,httpd.conf,Apache无法启动,不能启动

Apache 无法启动 - 表示 httpd 模块已加载但未运行

无法在 laragon 上启动服务 apache

WAMP 无法启动:获取“AH00526:C:/wamp/bin/apache/Apache2.4.4/conf/httpd.conf 的第 224 行语法错误”