Molti utenti rientrano in questa discussione aspettandosi di trovare una soluzione per la visualizzazione di pagine vuote durante l'utilizzo di nginx + php-fpm , di cui sono uno di loro. Questo è un riassunto di quello che ho finito dopo aver letto molte delle risposte qui oltre alle mie indagini (aggiornato a php7.2):
1) Aprire /etc/php/7.2/fpm/pool.d/www.conf
e verificare il valore del parametro listen
.
listen = /var/run/php/php7.2-fpm.sock
2) Il parametro listen
deve corrispondere al fastcgi_pass
parametro nel file di configurazione del sito (i, e:) /etc/nginx/sites-enabled/default
.
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Verifica che il file esista effettivamente:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) Se non esiste, significa che php7.2-fpm non è in esecuzione, quindi è necessario riavviarlo:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
Per quanto riguarda la location
sezione in /etc/nginx/sites-enabled/default
:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
Verifica che il file snippets/fastcgi-php.conf
esista nella posizione /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
Questo file contiene un elenco di definizioni variabili richieste da php7.2-fpm. Le variabili sono definite direttamente o tramite l'inclusione di un file separato.
include fastcgi.conf;
Questo file si trova in /etc/nginx/fastcgi.conf
e sembra:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx include due possibili file di parametri: fastcgi_params e fastcgi.conf . La differenza tra entrambi è la definizione di variabile SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Per farla breve, fastcgi.conf dovrebbe sempre funzionare. Se per qualche motivo che stai configurando utilizza fastcgi_params , dovresti definire SCRIPT_FILENAME
:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Ora ricarica la configurazione di nginx:
$ sudo nginx -s reload
E controlla che un file php sia visualizzato correttamente. Per esempio:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
Dov'è /var/www/html
il percorso della radice del documento.
Se, nonostante tutto questo, si sta ancora vedendo un file vuoto, assicurarsi che il proprio php.ini
è short_open_tag
attivato (se si sta testando una pagina PHP con brevi tag).