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 :

1
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

1
sed -i "s|^display_errors = Off|display_errors = On|g" /etc/php/8.1/fpm/php.ini
2
sed -i "s|^display_startup_errors = Off|display_startup_errors = On|g" /etc/php/8.1/fpm/php.ini
3
systemctl restart php8.1-fpm.service
4

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 :

1
server{
2
        listen 80;
3
4
        server_name monsite.fr;
5
        root /home/www/monsite;
6
        index index.php index.html;
7
8
        location / {
9
                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
10
                }
11
12
        location ~ \.php$ {                                       #on explique à nginx ce qu'il doit faire si on lui demande un fichier terminant par .php
13
                include snippets/fastcgi-php.conf;                #on inclut une configuration nginx situé dans /etc/nginx/snippets/ 
14
                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
15
}
16
17
18
        error_log /home/logs/monsite.error.log;
19
        access_log /home/logs/monsite.log;
20
21
}
22

On peut ensuite à la racine de notre site créer un fichier phpinfo.php contenant le code ci-dessous :

1
<?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.