Installation du module php
Installation
Nous allons devoir installer un paquet permettant à Nginx de traiter les fichiers PHP. Pour cela il suffit d'entrer la commande :
sudo apt-get install php-fpm
Configuration
Le fichier de configuration de php-fpm se trouve à l'adresse /etc/php/8.1/fpm/php.ini
. Le fichier est très complet et bien expliqué (en anglais), la configuration de base est très bien pour l'utilisation que nous allons en faire, il est cependant recommandé d'aller remplacer display_errors = off
par display_errors = on
, ce qui peut être très utile en cas d'erreurs lorsque l'on est en phase de développement. Cette variable est à laisser off
dans un environnement de production, car on veut en général cacher au maximum les éventuelles erreurs PHP pour des raison d'ergonomie, de présentation mais également de sécurité.
Pour notre cas, nous allons activer l'affichage des erreurs pour nous aider à débugger notre application le temps du développement
sed -i "s|^display_errors = Off|display_errors = On|g" /etc/php/8.1/fpm/php.ini
sed -i "s|^display_startup_errors = Off|display_startup_errors = On|g" /etc/php/8.1/fpm/php.ini
systemctl restart php8.1-fpm.service
Nous allons aussi devoir effectuer des modifications dans nos configuration nginx pour lui dire quoi faire avec nos fichier php.
Voici une configuration minimale pour nginx utilisant du php :
server{
listen 80;
server_name monsite.fr;
root /home/www/monsite;
index index.php index.html;
location / {
try_files $uri $uri/ =404; #on indique au serveur qu'on essaye d'abord de charger le fichier demandé dans l'url (avec $uri) ou sinon le dossier ($uri/) ou de renvoyer une erreur 404 si il ne trouve pas le fichier
}
location ~ \.php$ { #on explique à nginx ce qu'il doit faire si on lui demande un fichier terminant par .php
include snippets/fastcgi-php.conf; #on inclut une configuration nginx situé dans /etc/nginx/snippets/
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #on indique à nginx quel processus s'occupe du php, on peut trouver la liste des processus dans /var/run
}
error_log /home/logs/monsite.error.log;
access_log /home/logs/monsite.log;
}
On peut ensuite à la racine de notre site créer un fichier phpinfo.php
contenant le code ci-dessous :
<?php phpinfo(); ?>
Enfin on peut se rendre sur notre site et ajouter /phpinfo.php
à l'url et observer que notre site reconnaît désormais les fichiers php.
La page affichée est une page récapitulative de la configuration de php sur notre serveur.