Ubuntu Apache2 DefaultRuntimeDir必须是有效目录,相对于ServerRoot是绝对目录或相对目录


16

我有一个尝试安装的运行Ubuntu 16.04的Web服务器Apache。一切运行良好,直到我决定通过virtualHosts在单个计算机上托管两个网站。现在apache,即使启用了单个主机,也拒绝启动。每次尝试启动时Apache,都会出现此错误:

apache2: Syntax error on line 80 of /etc/apache2/apache2.conf:
DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot.

我没有解决此问题的任何尝试,包括:

apt purge apache2 && rm -r /etc/apache2 

错误消息的所有第80行告诉我是DefaultRuntimeDir ${APACHE_RUN_DIR}

而且我从来没有看到APACHE_RUN_DIR声明在哪里或什么。

有人可以帮我吗?

Answers:


16

命令

source /etc/apache2/envvars

解决了我的问题(尝试了所有其他问题之后)。

要检查是否一切正常,请使用以下命令

apache2 -S

我发现这比使用DNS记录要快。


1
我使用,source /etc/apache2/envvars但是之后我的主目录从更改为~home并且在我写cd时显示-bash: cd: HOME not set。当我输入envvars时,第一行是# this won't be correct after changing uidunset HOME。任何想法如何解决这个问题?
Mihail Minkov '19


6

Apache2用于/etc/apache2/envvars设置环境变量。您可以使用此信息来确保目录${APACHE_RUN_DIR}指向有效。

从14.04升级到17.04时遇到了同样的问题。问题是:${APACHE_RUN_DIR}设置为/var/run/apache2,但是缺少apache2文件夹/var/run

对我来说,解决方法是: mkdir /var/run/apache2


7
即使创建了文件夹,或者文件夹已经存在(例如我的情况),也必须运行以下命令。source /etc/apache2/envvars
Peshmerge

仅在不使用startscript的情况下启动Apache时,才需要运行envvares命令;如果您使用的是init.d / system.d,则该文件将自动获得。
Niyol

@Peshmerge谢谢!您能告诉我重启后如何保留它吗?似乎在重新启动后,我们每次都必须手动执行该命令
T.Todua 18-10-19

1

在我的情况下,这是关于apache2.conf文件中的“需要全部拒绝”行(再次)在我的情况下被键入为“需要拒绝”


0

重新启用php5.6apache模块有助于解决此问题。

Ctrl+ Alt+ T并输入以下内容:

sudo a2dismod php5.6
sudo a2enmod php5.6

然后重新启动apache2服务:

sudo service apache2 restart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.