Ubuntu Apache2 DefaultRuntimeDir должен быть действительным каталогом, абсолютным или относительным к ServerRoot

15

У меня есть веб-сервер под управлением Ubuntu 17.04, который я пытаюсь настроить 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объявлено как.

Кто-нибудь может мне помочь?

timhyd
источник

Ответы:

16

Команда

source /etc/apache2/envvars

разобрался с моей проблемой (после попытки ВСЕХ других).

Чтобы проверить, все ли хорошо, используйте команду

apache2 -S

Я обнаружил, что это было быстрее, чем использовать мои записи DNS.

ianm
источник
1
Я использовал, source /etc/apache2/envvarsно после этого мой домашний каталог изменился с ~на, homeи когда я написал CD, он показал -bash: cd: HOME not set. Когда я вошел в envvars, одна из первых строк - это # this won't be correct after changing uidи unset HOME. Есть идеи, как это исправить?
Михаил Минков
7

В "man apache2" отсутствует обновление, по крайней мере, для опции -V;

Сегодня вместо «apachectl» или «apache2ctl» следует использовать

"apache2" по крайней мере для некоторых опций, как указано в

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879571

Rocdufer
источник
Не совсем понятно, как это отвечает на вопрос.
Рэнди Крагун
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

Niyol
источник
7
даже если вы создали папку или папка уже представлена ​​(как в моей ситуации), вам придется выполнить следующую команду. source /etc/apache2/envvars
пешмерге
вам нужно только запустить команду envvares, если вы запускаете Apache без стартового скрипта, если вы используете init.d / system.d, файл будет получен автоматически.
Niyol
@Peshmerge Спасибо! подскажите как сохранить после перезагрузки? кажется, при перезагрузке мы должны вручную выполнять эту команду каждый раз
T.Todua
1

в моем случае это касалось строки «Требовать все отказано» в файле apache2.conf, которая (опять же) в моем случае была напечатана как «Требовать отказано»

Гдето Якутский
источник
0

Повторное включение php5.6модуля apache помогает решить эту проблему.

Нажмите Ctrl+ Alt+ Tи введите их:

sudo a2dismod php5.6
sudo a2enmod php5.6

Затем перезапустите сервис apache2:

sudo service apache2 restart
Владимир Ч
источник