Skip to content

Configuration PHP 8.3 pour Symfony en production

1. Identifier le fichier php.ini utilisé

Ligne de commande (CLI)

bash
php --ini

Résultat attendu :

Configuration File (php.ini) Path: /etc/php/8.3/cli
Loaded Configuration File:         /etc/php/8.3/cli/php.ini

PHP-FPM (serveur web)

bash
php-fpm8.3 -i | grep "Loaded Configuration"

Résultat attendu :

Loaded Configuration File => /etc/php/8.3/fpm/php.ini

Les fichiers de configuration peuvent différer entre CLI et FPM. Symfony utilise celui de FPM.


2. Lien symbolique pour édition simplifiée

Je crée un lien vers le php.ini utilisé par FPM :

bash
sudo mkdir -p /var/www/html/php8.3
sudo ln -s /etc/php/8.3/fpm/php.ini /var/www/html/php8.3/php.ini

Je vérifie :

bash
ls -l /var/www/html/php8.3/php.ini

Sortie :

php.ini -> /etc/php/8.3/fpm/php.ini

3. Gestion des permissions

J’ajoute mon utilisateur au groupe www-data et je donne les droits d’écriture :

bash
sudo usermod -aG www-data mon_nom_utilisateur
sudo chown root:www-data /etc/php/8.3/fpm/php.ini
sudo chmod 664 /etc/php/8.3/fpm/php.ini

Je me reconnecte ou j’exécute newgrp www-data pour appliquer le changement.


4. Paramètres recommandés pour Symfony (production)

J’édite le fichier :

bash
sudo nano /etc/php/8.3/fpm/php.ini

Je m’assure que les valeurs suivantes sont définies :

ini
memory_limit = 512M
post_max_size = 32M
upload_max_filesize = 32M
max_execution_time = 60
max_input_time = 60
max_input_vars = 5000

realpath_cache_size = 4096K
realpath_cache_ttl = 600

opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0
opcache.revalidate_freq = 0
opcache.save_comments = 1

date.timezone = Europe/Paris

4.1. Retrait des droits d’écriture

Pour des raisons de sécurité, je retire les droits d’écriture après modification :

bash
sudo chmod 644 /etc/php/8.3/fpm/php.ini

5. Redémarrer PHP-FPM

J’applique les modifications :

bash
sudo systemctl restart php8.3-fpm

Je vérifie le statut :

bash
sudo systemctl status php8.3-fpm

6. Vérification finale (env de dev uniquement)

Je crée un fichier info.php dans /var/www/html :

php
<?php phpinfo();

J’ouvre http://localhost/info.php et je vérifie :

  • Loaded Configuration File pointe vers /etc/php/8.3/fpm/php.ini
  • Les paramètres configurés sont actifs.

7. Notes

  • opcache.save_comments = 1 est obligatoire pour Symfony et Doctrine.
  • Je ne modifie jamais le fichier du CLI pour les besoins web.
  • En cas de multi-version PHP, j’isole chaque configuration :
    /var/www/html/php8.2/php.ini
    /var/www/html/php8.3/php.ini