Ubuntu Apache2 DefaultRuntimeDir должен быть действительным каталогом, абсолютным или относительным к ServerRoot
У меня есть веб-сервер под управлением 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
объявлен как.
Кто-нибудь может мне помочь?
9 ответов
Команда
source /etc/apache2/envvars
разобрался с моей проблемой (после попытки ВСЕХ других).
Чтобы проверить, все ли хорошо, используйте команду
apache2 -S
Я обнаружил, что это было быстрее, чем использовать мои записи DNS.
В "man apache2" отсутствует обновление, по крайней мере, для опции -V;
Сегодня вместо "apachectl" или "apache2ctl" следует использовать
"apache2" по крайней мере для некоторых опций, как указано в
Apache2 использует /etc/apache2/envvars
установить переменные среды. Вы можете использовать эту информацию, чтобы убедиться, что каталог ${APACHE_RUN_DIR}
указывает на действует.
У меня возникла та же проблема при обновлении с 14.04 до 17.04. Проблема была: ${APACHE_RUN_DIR}
был установлен на /var/run/apache2
, но папка apache2 отсутствовала в /var/run
,
Исправление для меня было: mkdir /var/run/apache2
Была такая же проблема, и можно было решить ее, используя:
apache2ctl start
В моем случае это касалось строки "Требовать все отказано" в файле apache2.conf, которая (опять же) в моем случае была напечатана как "Требовать отказано"
У меня была эта проблема с Ubuntu 20.14 и Apache2 после запуска Vagrant. Мое решение состояло в том, чтобы изменить корень документа в
/etc/apache2/sites-enabled/000-default.conf
Перед изменением ->
DocumentRoot /var/www/HTML
Я удалил «HTML» (потому что я не использую каталог HTML (это только для разработки, а не для производства)
После изменения ->
DocumentRoot /var/www/
Затем я перезапустил Apache
sudo systemctl stop apache2
sudo systemctl start apache2
и все хорошо.
Reenebling php5.6
Модуль Apache помогает решить эту проблему.
Нажмите Ctrl+Alt+T и введите эти:
sudo a2dismod php5.6
sudo a2enmod php5.6
Затем перезапустите сервис apache2:
sudo service apache2 restart
У меня только что была эта ошибка, я просмотрел все предложенные идеи, но ни одна из них не сработала. Я изменил URL-адрес в
sites-available
.conf
файл, перезапустил Apache и Boom. Он перестал работать. Решение состоит в том, чтобы войти в
sites-enabled
и удалите там старый файл, а затем перезапустите apache2. Надеюсь, это кому-то поможет!
Вот ответ, который я нашел;
apache2 -S ответил;
apache2: синтаксическая ошибка в строке 80 файла /etc/apache2/apache2.conf:DefaultRuntimeDir принимает один аргумент, общий каталог для файлов времени выполнения (общая память, блокировки и т. д.)
Строка 80 файла /etc/apache2/apache2.conf:DefaultRuntimeDir ${APACHE_RUN_DIR}
Строка 86 отдала файл /etc/apache2/envars, который показывает это:
экспортировать APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
экспортировать APACHE_RUN_DIR=/var/run/apache2$SUFFIX
экспортировать APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
Указание среды установлено.
Глядя на папку /var/run/apache2, она принадлежит Root.
Выполнить: chown -R www-data:www-data /var/run/apache2
Что теперь должно позволить пользователю без полномочий root, работающему под управлением Apache2, записывать в папку. Перезапустите systemctl, перезапустите apache2.
apache2 -S Теперь работает правильно.