nginx + PHP-FPM = errore “permesso negato” 13 nel registro nginx; errore di configurazione?


20

Ho nginx 0.7x + PHP-FPM in esecuzione su PHP 5.2.10 su un server RHEL5, ma provando a duplicare quella configurazione sotto PHP-FPM in bundle in PHP 5.3.3 su un secondo server, sto avendo alcuni problemi con errori di autorizzazione ogni volta che c'è un OTTENERE.

FPM viene avviato e confermato che fastcgi è in ascolto su 9000, ma ogni volta che eseguo un GET, vedo questo errore nel registro di nginx:

2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com"

Barebones nginx.conf.default funziona, almeno. Ecco il mio nginx.conf

server {
        listen       80;
        server_name  dev.noisepages.com;
        root   /home/noisepages/www;
        index  index.html index.htm index.php;

        access_log  logs/dev.access.log;
 error_log logs/dev.error.log;

        location / {

 if (-f $request_filename) {
  expires 30d;
  break;
  }

 # this sends all non-existing file or directory requests to index.php
 rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
 if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
  rewrite ^.+?(/.*\.php)$ $1 last;
  rewrite ^ /index.php last;
  }
        }

        location ~ \.php$ {
            include        fastcgi_params;
            fastcgi_pass   unix:/dev/shm/php-fastcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    /home/dev/www/$fastcgi_script_name;
        }
    }

(Le direttive di riscrittura extra sono per l'uso del multisito di WordPress aka WordPress MU)

Ho anche verificato che l'utente www-data è dichiarato non solo in nginx.conf ma anche in php-fpm.conf per i valori utente e di gruppo.

Forse non capisco cosa causa il messaggio di errore 13? Stranamente, ho provato a configurare dev.noisepages.com sul primo server in parallelo con un paio di altri host virtuali - ognuno dei quali funzionava bene - e ho riscontrato lo stesso errore.

Risposte:


57

Devi assicurarti di avere +xsu tutte le directory nel percorso che porta alla radice del sito - così /home, /home/noisepagese/home/noisepages/www


2
Sì, infatti www aveva le autorizzazioni corrette ma non l'intero percorso! Grazie! Ha un senso - stupido errore da parte mia.
Peter Kirn,

1
Se potessi darti altri 10 voti lo farei.
Tim

Sei davvero forte! Trascorro 2 ore su google per trovare la tua risposta! Grazie!
Serhii Polishchuk,

Grazie mille! Stavo scherzando su un server di produzione e ho iniziato a sudare freddo quando è successo ...!
lephleg,

5

assicurarsi che / home / dev abbia i permessi corretti

chmod +x /home/dev

2

Ho avuto problemi con le autorizzazioni anche in php-fpm, in particolare con sessioni php. Si è scoperto che dovevo solo modificare l'utente che php-fpm utilizza per eseguire i processi, poiché di default era impostato su "nessuno".

tutorial qui: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/


3
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Scott Pack,

3
Il collegamento è morto ..
Christoph Bühler,

1

Ho avuto un problema simile che mi ha portato qui. La mia soluzione (basata sulla risposta scelta) era fare a

chown -R root:www-data /home/noisepages/www
chmod g+w -R /home/noisepages/www

Ora funziona bene :)


Ma come puoi farlo se usi utenti Chroot? Quando si usano utenti chroot, la cartella / home / user / www deve essere di proprietà dell'utente e non funziona.
Vincent LITUR,

Scusa, non lo so :(
Scott Warren,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.