Nginx / FPM / PHP tutti i file php dicono "File non trovato."


8

ho appena installato nginx 1.1.13 e php 5.4.0 su una macchina a 64 bit finale a centos 5.8. Nginx e PHP / Fpm sono in esecuzione e posso eseguire script php tramite la riga di comando ssh, ma nel browser continuo a ricevere "File non trovato". errori su tutti i miei file PHP.

Ecco come ho il mio nginx.conf gestire gli script PHP:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Questo è un copia / incolla diretto dagli altri miei server, dove funziona bene con questa configurazione (ma eseguono versioni precedenti di php / fpm).

Perché ricevo quegli errori?


1
Non importa, è ordinato. Era un problema di autorizzazioni sciocco.
Mr.Boon

Risposte:


17

Inserisci "include fastcgi_params;" prima di tutte le righe "fastcgi_param *", "include fastcgi_params;" sovrascrive tutte le righe "fastcgi_param *" (vedi registro debug nginx):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}

3
Amico, ci ho perso 4 ore e la tua risposta mi ha aiutato.
esperto

Ho cercato di superare questo problema da ieri. La tua risposta mi ha aiutato moltissimo! Grazie!!!
Kacper Kołodziej,

1
come possiamo farlo senza codificare il percorso? $ document_root vars sembra non essere wokring?
user1179459

3

Ho avuto lo stesso problema.

Quello che ho fatto per risolvere questo problema è stato quello di verificare l'utente che esegue nginx, php-fpm e verificare le autorizzazioni per accedere alla cartella in cui si trova il root. Si tratta di "dati www" predefiniti.

ma puoi scoprirlo usando i comandi ps aux | grep php-fpme ps aux | grep nginx.

Devi assicurarti che la cartella sia accessibile all'utente che esegue questi processi.


Grazie per l'indizio. Ho cercato di ospitare i miei progetti in profondità nella mia directory Dropbox, che aveva 700 autorizzazioni per impostazione predefinita. La modifica dell'autorizzazione di Dropbox su 755 ha risolto il problema.
Rodion Baskakov,

1

Ho avuto lo stesso problema, e per me era una direttiva "root" errata / non esistente nella configurazione del server nginx


1

Uso tale configurazione, vorrei che potesse aiutarti. Funziona in OS X. Per quanto mi riguarda, la risposta di @Xosofox ha funzionato. Ho sbagliato a digitare la versione di nginx 1.6.2 come 1.2.6, in modo che il root diventasse una directory inesistente.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}

0

Risolvo questo problema cambiando utente e gruppo all'utente corrente: gruppo in php-fpm.d / www.conf

Per impostazione predefinita, l'utente e il gruppo sono "nginx", cambiarlo ....

Spero che sia di aiuto

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.