Configuration PHP 8.3 pour Symfony en production
1. Identifier le fichier php.ini utilisé
Ligne de commande (CLI)
bash
php --iniRésultat attendu :
Configuration File (php.ini) Path: /etc/php/8.3/cli
Loaded Configuration File: /etc/php/8.3/cli/php.iniPHP-FPM (serveur web)
bash
php-fpm8.3 -i | grep "Loaded Configuration"Résultat attendu :
Loaded Configuration File => /etc/php/8.3/fpm/php.iniLes 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.iniJe vérifie :
bash
ls -l /var/www/html/php8.3/php.iniSortie :
php.ini -> /etc/php/8.3/fpm/php.ini3. 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.iniJe me reconnecte ou j’exécute
newgrp www-datapour appliquer le changement.
4. Paramètres recommandés pour Symfony (production)
J’édite le fichier :
bash
sudo nano /etc/php/8.3/fpm/php.iniJe 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]
; ========================================================================
; 🔧 Configuration OPcache optimisée pour Symfony 7.x (production PHP 8.3)
; ========================================================================
; Active le cache d’opcode Zend OPcache
opcache.enable=1
; Désactive OPcache pour la CLI (évite des incohérences avec bin/console)
opcache.enable_cli=0
; Mémoire allouée au cache d’opcodes (en Mo)
opcache.memory_consumption=256
; Mémoire dédiée aux chaînes internées (en Mo)
opcache.interned_strings_buffer=16
; Nombre maximum de fichiers PHP mis en cache
opcache.max_accelerated_files=20000
; Redémarre automatiquement le cache si plus de 10 % de mémoire est “gaspillée”
opcache.max_wasted_percentage=10
; Vérifie les modifications des fichiers PHP (nécessaire pour déploiement sans restart)
opcache.validate_timestamps=1
; Vérifie les changements toutes les 2 secondes
opcache.revalidate_freq=2
; Conserve les commentaires PHPDoc (obligatoire pour Doctrine et attributs)
opcache.save_comments=1
; Active la libération mémoire rapide (accélère les shutdown PHP-FPM)
opcache.fast_shutdown=1
date.timezone = Europe/Paris4.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.ini5. Redémarrer PHP-FPM
J’applique les modifications :
bash
sudo systemctl restart php8.3-fpmJe vérifie le statut :
bash
sudo systemctl status php8.3-fpm6. 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 Filepointe vers/etc/php/8.3/fpm/php.ini- Les paramètres configurés sont actifs.
7. Notes
opcache.save_comments = 1est 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