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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
PHP-FPM-ERR-CONF-PERM Linux / DevOps

PHP-FPM Ошибка: failed to open configuration file: Permission denied

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

Механизм инициализации конфигурации и прав доступа в Linux

При запуске службы PHP-FPM системный менеджер systemd стартует главный процесс интерпретатора. В процессе инициализации парсер конфигурации пытается прочитать основной файл (например, /etc/php/8.2/fpm/php-fpm.conf) и все включенные пулы в каталоге pool.d/*.conf. Если демон натыкается на запрет чтения на уровне стандартных POSIX-прав файловой системы (DAC), расширенных списков контроля доступа (ACL) или политик безопасности ядра SELinux / AppArmor, служба аварийно останавливается со статусом EXIT_FAILURE:

«ERROR: failed to open configuration file '/etc/php/8.2/fpm/php-fpm.conf': Permission denied (13)»
«ERROR: failed to post process the configuration»
«ERROR: FPM initialization failed»

Бизнес-риски

Полная недоступность всех веб-ресурсов сервера после планового перезапуска или обновления пакетов, сбой автоматических пайплайнов деплоя.

Сравнение уровней блокировки прав доступа к файлам

Подсистема безопасностиГде проявляетсяИнструмент диагностики
Стандартные права Linux (POSIX DAC)Неверный владелец (UID/GID) или маска chmod.ls -la /etc/php/
Списки доступа POSIX ACLСкрытые запрещающие расширенные атрибуты.getfacl /etc/php-fpm.conf
Модули безопасности (SELinux / AppArmor)Конфликт контекста безопасности (Security Context).audit2why / aa-status

Регламент восстановления прав доступа к конфигурационным файлам

Шаг 1: Восстановление стандартных прав владения и разрешений

Конфигурационные файлы PHP-FPM должны принадлежать суперпользователю root и иметь права на чтение:

# 1. Проверка текущих прав на дерево каталогов конфигурации:
ls -ld /etc/php/ /etc/php/8.2/ /etc/php/8.2/fpm/ /etc/php/8.2/fpm/php-fpm.conf

# 2. Установка корректных прав владельца root:root:
sudo chown -R root:root /etc/php/

# 3. Выставление прав на директории (755 - rwxr-xr-x) и файлы (644 - rw-r--r--):
sudo find /etc/php/ -type d -exec chmod 755 {} \;
sudo find /etc/php/ -type f -exec chmod 644 {} \;

# 4. Проверка корректности синтаксиса от имени суперпользователя:
sudo php-fpm8.2 -t

Шаг 2: Диагностика и снятие блокировок SELinux (RHEL / CentOS / AlmaLinux)

Если операционная система использует SELinux, некорректный контекст безопасности блокирует чтение даже для root:

# 1. Проверка контекста безопасности SELinux:
ls -lZ /etc/php-fpm.conf /etc/php-fpm.d/

# 2. Восстановление стандартного системного контекста:
sudo restorecon -Rv /etc/php-fpm.conf /etc/php-fpm.d/

# 3. Проверка журнала аудита на наличие блокировок AVC Denial:
sudo ausearch -m avc -ts recent | grep php-fpm

Шаг 3: Проверка ограничений системного юнита Systemd

В современных дистрибутивах systemd изолирует службы с помощью директив безопасности:

# Проверьте оверрайды сервиса systemd:
sudo systemctl cat php8.2-fpm

# Убедитесь, что директивы ProtectSystem или ReadOnlyPaths не блокируют доступ к /etc:
# Если конфигурация верна, выполните запуск:
sudo systemctl restart php8.2-fpm
sudo systemctl status php8.2-fpm

Типовые ошибки администраторов

  • Смена владельца конфигурации на www-data: Каталог /etc/php/ не должен принадлежать непривилегированному веб-пользователю www-data в целях безопасности (защита от несанкционированной модификации веб-шеллами).
  • Установка прав 777 на каталог /etc/php/: Нарушает требования безопасности и может приводить к игнорированию конфигурации защитными утилитами.
Служба PHP-FPM не стартует из-за системных ошибок доступа?
Инженеры ITSTM настроят корректную модель прав доступа POSIX/SELinux и устранят системные конфликты Systemd.
Практический опыт инженера: При использовании символических ссылок (Symlinks) для управления конфигурациями убедитесь, что права на чтение и исполнение (rx) установлены на абсолютно все родительские директории по целевому пути ссылки.

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

Почему php-fpm -t выполняется успешно под sudo, но systemctl start падает?

Команда под sudo запускается в контексте вашей сессии, тогда как systemd запускает службу с дополнительными песочницами безопасности (ProtectSystem, PrivateTmp, CapabilityBoundingSet).

Как проверить синтаксис конкретного файла пула без запуска службы?

Выполните команду с ключом тестирования конфигурации: php-fpm8.2 -t -y /etc/php/8.2/fpm/php-fpm.conf.

Что делать, если AppArmor блокирует чтение кастомного пути к конфигурации?

Добавьте путь в профиль безопасности /etc/apparmor.d/local/usr.sbin.php-fpm и выполните sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.php-fpm.

Может ли атрибут chattr +i вызывать Permission Denied?

Да, если на файл установлен иммутабельный флаг i (проверяется через lsattr), попытки модификации или открытия с флагом записи будут отклонены.