Aktualizujem nginx na 1.4.7 a php na 5.5.12, Potom som dostal chybu 502. Pred aktualizáciou všetko funguje v poriadku.
nginx-error.log
2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"
nginx.conf
user www www;
worker_processes 1;
location / {
root /usr/home/user/public_html;
index index.php index.html index.htm;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/home/user/public_html$fastcgi_script_name;
include fastcgi_params;
}
Podobnú chybu som mal po aktualizácii php. PHP opravilo bezpečnostnú chybu, keď o
malo rw
oprávnenie k súboru socket.
Otvorte /etc/php5/fpm/pool.d/www.conf
alebo /etc/php/7.0/fpm/pool.d/www.conf
, v závislosti od vašej verzie.
Odkomentujte všetky riadky s povoleniami, ako napr:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Reštartujte fpm - sudo service php5-fpm restart
alebo sudo service php7.0-fpm restart
Poznámka: ak váš webový server beží pod iným používateľom ako www-data, musíte zodpovedajúcim spôsobom aktualizovať súbor www.conf
.
Všetky opravy, ktoré sa tu v súčasnosti uvádzajú, v podstate znova umožňujú vznik bezpečnostnej diery.
Nakoniec som urobil to, že som do konfiguračného súboru PHP-FPM pridal nasledujúce riadky.
listen.owner = www-data
listen.group = www-data
Uistite sa, že www-data je skutočne používateľ, pod ktorým beží nginx worker. V prípade debianu je to predvolene www-data.
Ak to urobíte týmto spôsobom, neumožníte bezpečnostný problém, ktorý mala táto zmena odstrániť.
Riešenie @Xander's funguje, ale po reštarte nezostane.
Zistil som, že musím zmeniť listen.mode
na 0660
v /etc/php5/fpm/pool.d/www.conf
.
Ukážka z www.conf:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
Úprava: Podľa @Chris Burgess som to zmenil na bezpečnejší spôsob.
Odstránil som komentár pre listen.mode, .group a .owner:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
/var/run Obsahuje len informácie o behu systému od posledného spustenia, napr. aktuálne prihlásených používateľov a spustených démonov. (http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure).
Bočná poznámka:
Môj php5-fpm -v
hlási: PHP 5.4.28-1+deb.sury.org~precise+1
. Problém sa vyskytol aj po nedávnej aktualizácii.