De nombreux utilisateurs tombent dans ce fil en espérant trouver une solution pour les pages vierges affichées tout en utilisant nginx + php-fpm , moi étant l'un d'entre eux. Voici un récapitulatif de ce que j'ai fini par faire après avoir lu de nombreuses réponses ici ainsi que mes propres enquêtes (mise à jour en php7.2):
1) Ouvrez /etc/php/7.2/fpm/pool.d/www.conf
et vérifiez la valeur du paramètre listen
.
listen = /var/run/php/php7.2-fpm.sock
2) Le paramètre listen
doit correspondre au fastcgi_pass
paramètre du fichier de configuration de votre site (i, e :) /etc/nginx/sites-enabled/default
.
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Vérifiez que le fichier existe réellement:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) S'il n'existe pas, cela signifie que php7.2-fpm n'est pas en cours d'exécution, vous devez donc le redémarrer:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
En ce qui concerne la location
section dans /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;
}
Vérifiez que le fichier snippets/fastcgi-php.conf
existe à l'emplacement /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
Ce fichier contient une liste de définitions de variables requises par php7.2-fpm. Les variables sont définies directement ou via une inclusion d'un fichier séparé.
include fastcgi.conf;
Ce fichier se trouve à /etc/nginx/fastcgi.conf
et il ressemble à:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx inclut deux fichiers de paramètres possibles: fastcgi_params et fastcgi.conf . La différence entre les deux est la définition de la variable SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Pour faire une histoire courte, fastcgi.conf devrait toujours fonctionner. Si, pour une raison quelconque , vous utilisez fastcgi_params , vous devez définir 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;
}
Maintenant, rechargez la configuration nginx:
$ sudo nginx -s reload
Et vérifiez qu'un fichier php s'affiche correctement. Par exemple:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
Où /var/www/html
est le chemin vers la racine du document.
Si malgré tout cela, vous voyez toujours un fichier vierge, assurez-vous que votre php.ini
a short_open_tag
activé (si vous testez une page PHP avec de courtes balises).