Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH00111: Config variable ${APACHE_RUN_DIR} is not defined Linux / DevOps

Apache Error AH00111: Config variable APACHE_RUN_DIR is not defined — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

При попытке запустить Apache напрямую через бинарный файл /usr/sbin/apache2 в Debian/Ubuntu консоль выдает фатальную ошибку инициализации переменных окружения: AH00111: Config variable ${APACHE_RUN_DIR} is not defined или AH00111: Config variable ${APACHE_LOG_DIR} is not defined.

Переменная окруженияФайл определенияЗначение по умолчанию в Debian/Ubuntu
${APACHE_RUN_DIR}/etc/apache2/envvars/var/run/apache2
${APACHE_LOG_DIR}/etc/apache2/envvars/var/log/apache2
${APACHE_RUN_USER}/etc/apache2/envvarswww-data
  • Прямой вызов /usr/sbin/apache2 -t или apache2 -k start аварийно прерывается.
  • Конфигурационные файлы виртуальных хостов не могут вычислить пути к логам и сокетам.
  1. Правильный способ проверки и запуска: Всегда используйте утилиту apache2ctl вместо прямого вызова бинарника apache2, так как она автоматически подгружает системные переменные окружения:
    # ПРАВИЛЬНО: sudo apache2ctl configtest
    # НЕПРАВИЛЬНО: sudo apache2 -t
  2. Если вам необходимо выполнить команду apache2 напрямую, предварительно импортируйте переменные из файла envvars:
    source /etc/apache2/envvars
    /usr/sbin/apache2 -t
  3. Проверьте физическое существование и права на чтение файла окружения /etc/apache2/envvars:
    ls -la /etc/apache2/envvars
  4. Убедитесь, что служба systemd корректно настроена на загрузку окружения в unit-файле /lib/systemd/system/apache2.service:
    [Service]
    EnvironmentFile=/etc/apache2/envvars
  5. Перезапустите веб-сервер штатной командой systemd:
    sudo systemctl restart apache2
Архитектурная специфика Debian/Ubuntu: В дистрибутивах семейств Debian и Ubuntu конфигурация Apache модульна и сильно завязана на переменные из /etc/apache2/envvars. В Red Hat/CentOS/Fedora переменные окружения не используются, и пути захардкожены в httpd.conf напрямую.
Практический опыт инженера: При написании кастомных скриптов мониторинга или cron-задач для Apache на Ubuntu всегда начинайте скрипт со строки `. /etc/apache2/envvars`.

Частые вопросы (FAQ)

Почему Debian использует файл envvars?

Это позволяет системным администраторам централизованно менять пользователя веб-сервера, каталоги сокетов, логов и локали (LANG/LC_ALL) без ручного редактирования десятков конфигурационных файлов vhost.

Как запустить Apache2 под gdb при наличии этой ошибки?

Выполните source /etc/apache2/envvars, после чего запустите gdb --args /usr/sbin/apache2 -X.

Что делать, если файл /etc/apache2/envvars случайно удален?

Восстановите его стандартное содержимое из пакета: sudo apt-get install --reinstall apache2.2-common (или apache2-bin/apache2-data).

Можно ли заменить переменные ${APACHE_LOG_DIR} на абсолютные пути?

Да, вы можете прописать абсолютные пути вроде /var/log/apache2/access.log напрямую в конфигах vhost, но использование стандартных переменных считается лучшей практикой.