Skip to content
VDS · Sites web et serveurs web

PHP-FPM : sites PHP

Installer PHP-FPM sur VDS, l'intégrer à Nginx, choisir le nombre de processus selon la mémoire de votre palier et résoudre les erreurs 502 et 504.

Mis à jour le 23 août 2026

PHP-FPM est un service distinct qui exécute le code PHP ; le serveur web ne fait que lui transmettre les requêtes. C'est ainsi que fonctionnent WordPress, Laravel, Bitrix et la quasi-totalité des projets en PHP.

Installation

apt update
apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
systemctl enable --now php8.3-fpm

Sur AlmaLinux et CentOS Stream, utilisez dnf install -y php-fpm php-mysqlnd ... ; le service s'appelle php-fpm. Pour vérifier la version exacte, exécutez :

php -v
systemctl list-units | grep fpm

Connexion à Nginx

server {
    listen 80;
    server_name example.ru;
    root /var/www/example.ru/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.(?!well-known) { deny all; }
}
nginx -t && systemctl reload nginx
echo '<?php phpinfo();' > /var/www/example.ru/public/info.php

Ouvrez /info.php, assurez-vous que PHP fonctionne, puis supprimez immédiatement le fichier : il expose la version, les chemins et la liste des modules.

Combien de processus conserver

Chaque processus PHP worker consomme 40 à 120 Mo. Dimensionnez-le selon le palier, en laissant de la mémoire pour la base de données et le système. Cela se configure dans /etc/php/8.3/fpm/pool.d/www.conf :

PalierMémoirepm.max_children raisonnable
VDS-12 Go5
VDS-24 Go10
VDS-38 Go20
VDS-524 Go60
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500

pm.max_requests redémarre un processus après N requêtes, afin que les fuites de mémoire dans le code ne s'accumulent pas jusqu'à la fin de la semaine.

Valeurs php.ini utiles pour FPM : memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.

Après modification : systemctl reload php8.3-fpm.

Erreurs courantes

SymptômeCauseQue faire
502 Bad GatewayChemin de socket erroné ou service arrêtéVérifiez fastcgi_pass par rapport au fichier réel dans /run/php/
504 Gateway Time-outLe script s'exécute plus longtemps que le délai impartiAugmentez fastcgi_read_timeout et max_execution_time
Le navigateur télécharge le fichier au lieu de l'exécuterLe bloc location ~ \.php$ n'a pas corresponduVérifiez l'ordre des blocs location et exécutez nginx -t
server reached pm.max_children dans le journalPas assez de processusAugmentez la limite si la mémoire le permet, sinon passez au palier supérieur

Journaux : /var/log/php8.3-fpm.log et /var/log/nginx/error.log.

Créez la base de données du site sous un utilisateur distinct disposant de droits uniquement sur son propre schéma — utilisateurs et privilèges. Utiliser le compte root dans la configuration de votre CMS est le moyen le plus sûr de perdre toutes vos bases de données d'un coup.