NGINX non esegue i file PHP


9

Non sono riuscito a trovare una risposta per questo. Installato PHP5 + NGINX + PHP-FPM e impossibile eseguire i file php, viene visualizzato il messaggio "Spiacenti! Questo collegamento sembra essere interrotto". errore in CHROME. Non ho alcun rapporto utile sul registro degli errori, ho un index.php nella radice, ho provato a creare un file phpinfo.php personalizzato, né ha funzionato.

FACCIO posso caricare file HTML, ma non posso PHP.

Ecco la mia configurazione del sito locale in NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Modificata la proprietà di tutta la directory in www-data: www-data, fatto un 777 sul file php, niente. Riavviato nginx, FPM, niente.

Aiuto? :(


cerca nel registro degli errori
Mike,

Già fatto, "Non ho alcun rapporto utile sul registro degli errori". È completamente vuoto.
Gabriel A. Zorrilla,

Hai bisogno di più dati per diagnosticare il problema. Vorrei suggerire di iniziare aggiungendo 'fastcgi_intercept_errors su;' nella tua configurazione (se non in fastcgi_params) per registrare eventuali errori FPM. Aggiungi anche 'debug' alla tua linea error_log per ottenere molti più dettagli (controlla anche il nginx error_log principale (possibilmente in / var / log)). La tua direttiva server_name sembra inusuale - non sono sicuro se lo hai sostituito per questo post o in realtà è così. Come raccomandazione generale, sposta la direttiva radice fuori dal blocco della posizione. (Suggerimento (improbabile) finale: assicurati che il tuo server predefinito non offra le pagine html che puoi vedere).
cyberx86,

Risposte:


9

viene visualizzato il messaggio "Spiacenti! Questo collegamento sembra non funzionare." errore in CHROME.

Chrome mostra la propria pagina di errore se la pagina di errore è inferiore a 512 byte.

Ho il sospetto che tu abbia la seguente riga in fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

e in tal caso, poiché la rootdirettiva è definita location /non verrà mai applicata location ~ \.php$, quindi SCRIPT_FILENAMEdiventa URI.

Questo può essere risolto spostando la rootdirettiva nel servercontesto di livello:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Bingo. Spostato il blocco server come suggerito e funzionato. Grazie!
Gabriel A. Zorrilla,

@quanta: l'OP ha modificato la configurazione nella sua domanda? Poiché è un percorso hardcoded, dovrebbe comunque funzionare perfettamente quando la direttiva root è definita nel contesto della posizione. L'unico caso in cui non avrebbe funzionato sarebbe stato se avesse definito SCRIPT_FILENAME nel suo file fastcgi_params usando $ document_root e quindi annullato il suo hardcoded.
Martin Fjordvald,

@MartinF: No, l'OP non ha modificato la configurazione. Hai ragione. Modificherò la mia risposta.
quanta,

-3

Nel mio caso mancava il pacchetto php-zip. Per risolvere questo problema, ho eseguito:

yum install -y php-zip
systemctl restart php-fpm nginx

3
Apparentemente, la causa dell'OP era per qualcos'altro.
Sven

Ciò non significa che qualcuno che trova questa pagina con questo problema avrà la stessa causa dell'OP, potrebbe benissimo avere la causa che Wejdross ha fatto e trovare utile questa risposta. La domanda non è specifica per quella causa, è specifica per quel sintomo, e ovviamente ci sono molteplici cause, quindi le persone con cause diverse potrebbero finire qui.
Synetech,

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
Benvenuti in Server Fault! Sembra che tu possa avere le conoscenze per fornire una buona risposta qui, ma per favore considera di leggere Come posso scrivere una buona risposta? nel nostro centro assistenza, quindi rivedi ed espandi la tua risposta. I tuoi comandi / codice / impostazioni potrebbero essere tecnicamente la soluzione, ma alcune spiegazioni sono benvenute. Grazie in anticipo.
HBruijn,

4
Inoltre: anche se quella linea è ciò che risolve il problema, dove va? L'OP mostra due locations. La linea va in uno? L'altro? Tutti e due? Modifica la tua risposta per completarla.
David Makogon,
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.