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