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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH00141: Could not open configuration file /etc/httpd/conf.d/vhost.conf Linux / DevOps

Apache Error AH00141: Could not open configuration file — Решение

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

Веб-сервер не может запуститься или применить конфигурацию. В системном логе error.log фиксируется сбой открытия подключаемого файла: httpd: Syntax error on line 353 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf.d/vhost.conf: AH00141: Could not open configuration file /etc/httpd/conf.d/vhost.conf: No such file or directory.

Причина сбояТипичный сценарийРезультат для Apache
Битая символическая ссылкаФайл удален из sites-available, но симлинк в sites-enabled осталсяОтказ парсера при вызове IncludeOptional / Include
Ограничение прав (Permission Denied)Файл конфигурации создан под непривилегированным пользователем без прав чтенияAH00141: (13)Permission denied
SELinux блокировкаФайл перенесен из /home/ с неверным контекстом безопасностиSELinux запрещает системному процессу чтение файла
  • Команда apache2ctl configtest возвращает критическую ошибку на первой строке главного конфигурационного файла.
  • Удаление или переименование виртуального хоста приводит к падению всего сервера.
  1. Проверьте, существует ли физически файл, указанный в тексте ошибки:
    ls -la /etc/httpd/conf.d/vhost.conf
    # Или для Debian/Ubuntu:
    ls -la /etc/apache2/sites-enabled/
  2. Если в каталоге sites-enabled/ обнаружена «битая» красная ссылка (симлинк, ведущий в никуда), удалите ее:
    # В Debian/Ubuntu штатно отключите сайт:
    sudo a2dissite <имя_конфига>
    
    # Либо удалите сломанную ссылку вручную:
    sudo rm /etc/apache2/sites-enabled/broken_vhost.conf
  3. Выставьте корректные системные права на все конфигурационные файлы (чтение для всех, запись только для root):
    sudo chown -R root:root /etc/apache2/ # или /etc/httpd/
    sudo find /etc/apache2/ -type f -exec chmod 644 {} \;
    sudo find /etc/apache2/ -type d -exec chmod 755 {} \;
  4. Если на сервере активен SELinux, восстановите контексты безопасности конфигурационных директорий:
    sudo restorecon -Rv /etc/httpd/
  5. Замените жесткие директивы Include на безопасные IncludeOptional в главном конфигурационном файле, чтобы отсутствие файлов не вызывало падение сервера:
    # Безопасное подключение конфигов:
    IncludeOptional conf.d/*.conf
    IncludeOptional sites-enabled/*.conf
  6. Проверьте синтаксис и перезапустите службу: sudo apache2ctl configtest && sudo systemctl restart apache2.
Include vs IncludeOptional: Директива Include генерирует фатальную ошибку, если указанный файл или маска файлов не найдены. Директива IncludeOptional молча игнорирует отсутствующие файлы или пустые маски, обеспечивая стабильность запуска Apache.
Практический опыт инженера: Никогда не редактируйте файлы напрямую в `sites-enabled/`. Всегда создавайте и правьте исходники в `sites-available/`, подключая их исключительно через команду `a2ensite`.

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

Как быстро найти все битые симлинки в конфигурации Apache?

Выполните команду: find /etc/apache2/sites-enabled/ -xtype l -delete (она найдет и сразу удалит все сломанные символические ссылки).

Что означает утилита a2dissite?

В Debian/Ubuntu утилита a2dissite (Apache 2 Disable Site) просто удаляет символическую ссылку на файл из каталога /etc/apache2/sites-enabled/, сохраняя оригинальный файл в sites-available/.

Может ли опечатка в пути директивы Include вызывать AH00141?

Да, если путь относительный, Apache отсчитывает его от директивы ServerRoot (обычно /etc/apache2 или /etc/httpd).

Как проверить, какие именно файлы vhost подключаются сейчас?

Выполните apache2ctl -S или httpd -S — команда отобразит список всех загруженных виртуальных хостов с указанием файлов и номеров строк.