После обновления моей системы я столкнулся с плохой ошибкой шлюза моих приложений PHP, работающих на Nginx.
1 connect() для unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sock failed (13: Permission denied) при подключении к upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET/HTTP/1.1", вверх по течению: "fastcgi://unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sock:", host: "xx.xx.xx.xx"
Проблема вызвана плохими разрешениями сокетов php-fpm, на самом деле я вижу /var/run/php-fcgi.sock
, принадлежащих root:root
, но nginx и php-fpm используют как пользователь www-data
.
Я уже редактировал конфигурацию php-fpm в /etc/php-fpm.d/www.conf
с помощью
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
но он не решает проблему, и когда я перезапускаю nginx и php-fpm, сокеты создаются с помощью root:root
в качестве пользователя/группы.
Единственное, что я нашел, чтобы исправить это, - это изменить владельца сокетов на www-data: www-data вручную. Но это не настоящее решение, потому что каждый раз, когда я перезапускаю свои службы, я должен снова применять его.
Как я могу исправить эту проблему? Я на CentOS 6.5
Изменить:
Я использую Ajenti-V для настройки моих vhosts и моего PHP-FPM. Он создает новый сокет для каждого сайта /vhost, и их устанавливают в /etc/php-fpm.conf
У них есть эта структура:
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
Если я добавляю к каждой записи эти строки:
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
Все работает правильно.
Итак, похоже, что www.conf не включен (может быть?). Это мой php-fpm.conf:
[global]
pid = /var/run/php-fpm/php-fpm.pid
error_log = /var/log/php5-fpm.log
[global-pool]
user = www-data
group = www-data
listen = /var/run/php-fcgi.sock
pm = dynamic
pm.start_servers = 1
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 5
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5