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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH00015: Unable to open logs: Permission denied Linux / DevOps

Apache Error AH00015: Unable to open logs (Permission denied) — Решение

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

Служба веб-сервера Apache (httpd / apache2) не может запуститься или перезапуститься при перезагрузке ОС. В системном журнале systemctl status apache2 или journalctl -xeu httpd регистрируется критический отказ: (13)Permission denied: AH00015: Unable to open logs или AH00015: Unable to open logs: ErrorLog: could not open file /var/log/apache2/error.log.

КомпонентТекущее состояниеТребуемое значение
Директория логов/var/log/apache2/ или /var/log/httpd/Должна принадлежать пользователю root или группе веб-сервера
Права на директориюdrwxr-x--- (750) / владелец другой пользовательdrwxr-xr-x (755) или корректная группа adm / www-data
Контекст SELinuxvar_log_t отсутствуетhttpd_log_t
  • Apache немедленно аварийно завершает мастер-процесс на этапе парсинга директив ErrorLog и CustomLog.
  • Команда apache2ctl configtest или httpd -t возвращает: Action 'configtest' failed. AH00015: Unable to open logs.
  1. Проверьте права доступа и владельца целевой директории с логами:
    ls -ld /var/log/apache2
    # Для RHEL / CentOS:
    ls -ld /var/log/httpd
  2. Установите стандартные права и владельца (в Ubuntu/Debian мастер-процесс запускается от root, а воркеры от www-data):
    sudo chown -R root:adm /var/log/apache2
    sudo chmod -R 750 /var/log/apache2
    # Либо для CentOS/RHEL:
    sudo chown -R root:root /var/log/httpd
    sudo chmod 755 /var/log/httpd
  3. Если в файле виртуального хоста путь к логам ведет в кастомный каталог (например, /home/user/logs/), убедитесь, что родительские каталоги имеют флаг исполнения (+x) для чтения структуры папок.
  4. Если на сервере активен SELinux (CentOS, RHEL, Fedora, AlmaLinux, Rocky):
    # Восстановите стандартный контекст безопасности для каталога логов веб-сервера:
    sudo semanage fcontext -a -t httpd_log_t "/var/log/httpd(/.*)?"
    sudo restorecon -Rv /var/log/httpd
    
    # Если логи вынесены в нестандартную папку:
    sudo semanage fcontext -a -t httpd_log_t "/var/www/my-site/logs(/.*)?"
    sudo restorecon -Rv /var/www/my-site/logs
  5. Проверьте конфигурацию и запустите сервис:
    sudo apache2ctl configtest   # или sudo httpd -t
    sudo systemctl restart apache2 # или sudo systemctl restart httpd
Важно для безопасности: Никогда не передавайте права владения каталогом /var/log/apache2 непривилегированному пользователю www-data. Если процесс веб-сервера будет скомпрометирован через уязвимость в скрипте, злоумышленник сможет затереть логи или использовать уязвимость симлинков для перезаписи системных файлов от имени root при ротации логов.
Практический опыт инженера: Если вы используете `logrotate`, убедитесь, что в файле `/etc/logrotate.d/apache2` прописана директива `create 640 root adm`, иначе после первой же ночной ротации Apache упадет с ошибкой AH00015.

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

Почему мастер-процесс Apache не может открыть логи, если он запускается от root?

Мастер-процесс действительно стартует от root, но при наличии директив piped logs (логирование через пайп в стороннюю утилиту rotatelogs/cronolog) дочерний процесс запускается от непривилегированного пользователя, вызывая Permission Denied.

Как проверить, блокирует ли SELinux запись логов?

Выполните команду sudo ausearch -m avc -ts recent | grep httpd или проверьте аудит-лог /var/log/audit/audit.log на наличие запретов типа 'denied { write }'.

Что делать, если файл лога был удален вручную при работающем Apache?

Создайте пустой файл заново командой touch /var/log/apache2/error.log, выставьте права и выполните sudo systemctl restart apache2 (или apache2ctl graceful).

Как перенаправить логи Apache в системный журнал systemd/journald?

Укажите в конфигурации директиву: ErrorLog "journald:apache2" или ErrorLog "syslog:local7".