Guide d'installation et de configuration de PHP, avec Apache et PHP-FPM, sur un serveur Debian.

Changer de version

Installez une nouvelle version de PHP, ici PHP 8.3, avec le module Apache et PHP-FPM :

sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-fpm libapache2-mod-php8.3

Désactivez l'ancienne version et activez la nouvelle dans Apache si vous utilisez mod_php :

sudo a2dismod php7.2
sudo a2enmod php8.3
sudo systemctl restart apache2

php -v

Sélectionnez la version utilisée en ligne de commande :

sudo update-alternatives --display php
sudo update-alternatives --config php

Exécuter PHP en FastCGI (PHP-FPM)

À partir d'Apache 2.4.10, utilisez SetHandler pour exécuter PHP comme processus FastCGI :

<FilesMatch "\.php$">
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>

Démarrez le service PHP-FPM, puis rechargez Apache :

sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl restart apache2

Directives supplémentaires PHP

max_input_vars = 1000      ; Limite le nombre maximal de variables que PHP accepte via des requêtes POST, GET ou COOKIE.
post_max_size = 8M         ; Limite la taille maximale des données POST envoyées via un formulaire.
upload_max_filesize = 2M   ; Limite la taille maximale des fichiers téléversés via un formulaire.

Directives supplémentaires Apache

LimitRequestFieldSize 8190   # Taille maximale d'un champ d'en-tête HTTP
LimitRequestFields 100
LimitRequestBody 0           # Limite la taille maximale du corps d'une requête (comme une requête POST).
LimitRequestLine 8190        # Limite la taille maximale de la ligne de requête HTTP (méthode, URI, version HTTP).
LimitRequestHeaderSize 8190  # Limite la taille maximale des en-têtes de la requête HTTP.

Vérifier les valeurs

php -i | less
apachectl -S