Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Administration Linux

Configuration du fichier php.ini : Un guide complet pour optimiser PHP sur votre serveur

Le fichier php.ini est le fichier de configuration maître pour PHP — l’épine dorsale de presque toutes les applications web modernes. Que vous exécutiez WordPress, Laravel, Magento ou une application personnalisée, comprendre comment configurer correctement php.ini peut considérablement améliorer les performances de votre serveur, renforcer la sécurité et assurer une compatibilité transparente avec votre pile logicielle.

Ce guide complet vous guide à travers tout ce que vous devez savoir : ce que php.ini fait, comment le trouver, comment l’éditer en toute sécurité et comment vérifier que vos modifications fonctionnent correctement.

1. Qu’est-ce que php.ini et pourquoi est-ce important ?

Le fichier php.ini est un fichier de configuration en texte brut que PHP lit chaque fois qu’il s’initialise. Il contient des centaines de directives — des paires clé-valeur qui contrôlent pratiquement tous les aspects du comportement d’exécution de PHP, notamment :

  • L’allocation de mémoire pour les scripts
  • Les limites de téléchargement de fichiers et les tailles de données POST
  • Les niveaux de rapport d’erreurs et la journalisation
  • Les paramètres de gestion des sessions
  • Le chargement des extensions (par exemple, PDO, cURL, OPcache)
  • Les restrictions de sécurité telles que disable_functions et open_basedir
  • Les limites de temps d’exécution pour prévenir les scripts incontrôlables

Bien configurer ces paramètres n’est pas qu’une question de commodité — cela a un impact direct sur la stabilité de votre application, votre posture de sécurité et l’expérience de l’utilisateur final. Les paramètres PHP mal configurés sont l’une des principales causes d’erreurs d’application, d’échecs de téléchargement de fichiers, de plantages dus à l’épuisement de la mémoire et de vulnérabilités de sécurité exploitables.

Si vous hébergez vos applications PHP sur un plan VPS Hosting, vous avez un accès root complet pour modifier php.ini librement — ce qui vous donne un contrôle total sur votre environnement PHP.

2. Localisation du fichier php.ini

L’emplacement de php.ini varie selon votre système d’exploitation, votre version de PHP et l’API serveur (SAPI) utilisée (Apache mod_php, PHP-FPM ou CLI). Voici trois méthodes fiables pour le trouver.

Méthode 1 : Utiliser la ligne de commande (méthode la plus rapide)

Ouvrez votre terminal ou connectez-vous via SSH et exécutez :

php --ini

Exemple de sortie :

Configuration File (php.ini) Path: /etc/php/8.2/cli
Loaded Configuration File:         /etc/php/8.2/cli/php.ini
Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
Additional .ini files parsed:      /etc/php/8.2/cli/conf.d/10-opcache.ini, ...

> Important : PHP a souvent des fichiers php.ini séparés pour différentes SAPIs. La version CLI (/etc/php/8.2/cli/php.ini) est utilisée lors de l’exécution de PHP depuis la ligne de commande, tandis que la version Apache ou PHP-FPM (/etc/php/8.2/apache2/php.ini ou /etc/php/8.2/fpm/php.ini) est utilisée pour les requêtes web. Modifiez toujours le bon fichier selon votre cas d’usage.

Méthode 2 : Utiliser phpinfo() dans un navigateur

Cette méthode révèle exactement quel fichier php.ini votre serveur web charge — ce qui peut différer de la version CLI.

Étape 1 : Créez un nouveau fichier dans votre répertoire racine web :

sudo nano /var/www/html/info.php

Étape 2 : Ajoutez le contenu suivant :

<?php
phpinfo();
?>

Étape 3 : Enregistrez le fichier, puis ouvrez votre navigateur et accédez à :

http://yourdomain.com/info.php

Étape 4 : Recherchez la ligne « Loaded Configuration File » près du haut de la sortie. Elle affichera le chemin complet du fichier php.ini actif.

> ⚠️ Avertissement de sécurité : Supprimez info.php immédiatement après utilisation. Ce fichier expose des détails sensibles de la configuration du serveur que les attaquants peuvent exploiter.

sudo rm /var/www/html/info.php

Méthode 3 : Utiliser php -r (commande unique rapide)

php -r "echo php_ini_loaded_file();"

Cela affiche le chemin du fichier php.ini chargé directement dans votre terminal — aucune création de fichier requise.

Emplacements courants de php.ini par plateforme

Plateforme / ConfigurationChemin php.ini typique
Ubuntu/Debian + Apache (PHP 8.2)/etc/php/8.2/apache2/php.ini
Ubuntu/Debian + PHP-FPM (PHP 8.2)/etc/php/8.2/fpm/php.ini
Ubuntu/Debian + CLI (PHP 8.2)/etc/php/8.2/cli/php.ini
CentOS/RHEL + Apache/etc/php.ini
cPanel/WHM/usr/local/lib/php.ini
Windows (XAMPP)C:xamppphpphp.ini
macOS (Homebrew PHP 8.2)/opt/homebrew/etc/php/8.2/php.ini

3. Édition du fichier php.ini

Étape 1 : Créer d’abord une sauvegarde

Avant d’apporter des modifications, créez toujours une sauvegarde :

sudo cp /etc/php/8.2/apache2/php.ini /etc/php/8.2/apache2/php.ini.bak

Cela vous permet de restaurer rapidement la configuration d’origine en cas de problème.

Étape 2 : Ouvrir le fichier dans un éditeur de texte

Utilisez nano pour une expérience conviviale pour les débutants :

sudo nano /etc/php/8.2/apache2/php.ini

Ou utilisez vim pour une édition plus avancée :

sudo vim /etc/php/8.2/apache2/php.ini

Étape 3 : Naviguer et éditer les directives

Le fichier php.ini est volumineux (souvent plus de 1 500 lignes). Utilisez la fonction de recherche de votre éditeur pour accéder à des directives spécifiques :

  • Dans nano : Appuyez sur CTRL + W, puis tapez le nom de la directive (par exemple, memory_limit)
  • Dans vim : Appuyez sur /, puis tapez le nom de la directive

Étape 4 : Enregistrer et quitter

  • nano : Appuyez sur CTRL + X, puis Y, puis Enter
  • vim : Appuyez sur ESC, tapez :wq, puis appuyez sur Enter

4. Directives php.ini clés expliquées

Voici une analyse détaillée des directives php.ini les plus importantes que vous devriez connaître et configurer :

Limites de mémoire et de ressources

; Maximum memory a single PHP script can allocate
memory_limit = 256M

; Maximum time (in seconds) a script is allowed to run
max_execution_time = 60

; Maximum time PHP will spend parsing request data
max_input_time = 120

; Maximum number of input variables (important for complex forms)
max_input_vars = 3000

Paramètres de téléchargement de fichiers

; Whether file uploads are permitted
file_uploads = On

; Maximum size of an individual uploaded file
upload_max_filesize = 64M

; Maximum size of all POST data (must be >= upload_max_filesize)
post_max_size = 64M

; Maximum number of files that can be uploaded simultaneously
max_file_uploads = 20

> Règle générale : post_max_size doit toujours être égal ou supérieur à upload_max_filesize. Si post_max_size est plus petit, les téléchargements échoueront silencieusement.

Rapport d’erreurs et journalisation

; ---- DEVELOPMENT ENVIRONMENT ----
; Show all errors on screen (never use in production)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

; ---- PRODUCTION ENVIRONMENT ----
; Log errors to a file, never display them to users
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/error.log

Gestion des sessions

; Where session data is stored on the server
session.save_path = "/var/lib/php/sessions"

; Session cookie lifetime in seconds (0 = until browser closes)
session.cookie_lifetime = 0

; Prevent JavaScript from accessing session cookies (XSS protection)
session.cookie_httponly = On

; Only send session cookies over HTTPS
session.cookie_secure = On

; Strict session ID mode (prevents session fixation attacks)
session.use_strict_mode = On

OPcache (Accélérateur de performance)

OPcache améliore considérablement les performances de PHP en stockant le bytecode de script précompilé dans la mémoire partagée :

opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

5. Redémarrage de votre serveur Web

Les modifications apportées à php.ini ne prennent pas effet tant que vous ne redémarrez pas le service concerné. Utilisez la commande appropriée pour votre configuration :

Apache (mod_php)

sudo systemctl restart apache2
# or on CentOS/RHEL:
sudo systemctl restart httpd

Nginx + PHP-FPM

# Restart PHP-FPM (replace 8.2 with your PHP version)
sudo systemctl restart php8.2-fpm

# Restart Nginx
sudo systemctl restart nginx

Rechargement gracieux (zéro temps d’arrêt)

Pour les serveurs de production, utilisez un rechargement gracieux pour éviter de perdre les connexions actives :

# Apache graceful reload
sudo systemctl reload apache2

# PHP-FPM graceful reload
sudo systemctl reload php8.2-fpm

Vérifier que les services sont en cours d’exécution

sudo systemctl status apache2
sudo systemctl status php8.2-fpm

6. Vérification de vos modifications

Après le redémarrage de votre serveur, confirmez que vos nouveaux paramètres sont actifs en utilisant l’une de ces méthodes :

Méthode 1 : Grep en ligne de commande

# Check memory_limit
php -i | grep memory_limit

# Check upload_max_filesize
php -i | grep upload_max_filesize

# Check multiple values at once
php -i | grep -E 'memory_limit|upload_max_filesize|post_max_size|max_execution_time'

Méthode 2 : Page phpinfo()

Recréez le fichier info.php temporairement (n’oubliez pas de le supprimer après) et recherchez vos directives modifiées. Les valeurs modifiées apparaîtront dans les colonnes « Valeur locale » et « Valeur maître ».

Méthode 3 : One-Liner PHP

php -r "echo ini_get('memory_limit');"

7. Conseils avancés d’optimisation php.ini

Utiliser .htaccess pour remplacer php.ini (Apache uniquement)

Si vous êtes sur un hébergement partagé ou n’avez pas accès root, vous pouvez remplacer certains php.ini paramètres via .htaccess :

php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 120

> Note : Cela ne fonctionne que si AllowOverride est activé et que le fournisseur d’hébergement autorise les remplacements de directives PHP.

Utiliser ini_set() dans le code PHP

Pour les paramètres spécifiques à l’application, vous pouvez remplacer les valeurs php.ini à l’exécution dans vos scripts PHP :

<?php
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '300');
?>

Fichiers php.ini par répertoire (PHP-FPM)

Avec PHP-FPM, vous pouvez appliquer différents paramètres php.ini à différents hôtes virtuels ou répertoires en configurant les fichiers pool dans /etc/php/8.2/fpm/pool.d/. Ceci est particulièrement utile lors de l’hébergement de plusieurs applications avec des exigences différentes.

Si vous gérez plusieurs applications PHP, un VPS avec cPanel facilite considérablement la gestion des paramètres PHP par domaine via une interface graphique sans éditer manuellement les fichiers de configuration.

8. Durcissement de la sécurité via php.ini

Configurer correctement php.ini est l’un des moyens les plus efficaces de renforcer votre environnement PHP contre les attaques courantes.

Désactiver les fonctions dangereuses

; Prevent execution of system commands from PHP scripts
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source

Restreindre l’accès au système de fichiers

; Limit PHP file access to specific directories
open_basedir = /var/www/html:/tmp

Masquer les informations de version PHP

; Don't expose PHP version in HTTP headers
expose_php = Off

Désactiver l’inclusion de fichiers distants

; Prevent PHP from including remote URLs (common attack vector)
allow_url_fopen = Off
allow_url_include = Off

Renforcer la sécurité des sessions

session.cookie_httponly = On
session.cookie_secure = On
session.use_strict_mode = On
session.cookie_samesite = "Strict"

> Conseil Pro : Si vous exécutez un site de commerce électronique ou traitez des données utilisateur sensibles, associez votre php.ini renforcé à un certificat SSL valide pour chiffrer toutes les données en transit. HTTPS est obligatoire pour que session.cookie_secure = On fonctionne correctement.

9. Erreurs courantes php.ini à éviter

ErreurPourquoi c’est un problèmeSolution
Setting memory_limit = -1 in productionPermet aux scripts de consommer une RAM illimitée, causant des plantages serveurDéfinissez une limite raisonnable comme 256M ou 512M
display_errors = On in productionExpose les chemins de fichiers sensibles et les identifiants de base de données aux utilisateursDéfinissez sur Off et utilisez log_errors = On à la place
post_max_size < upload_max_filesizeCause des échecs d’upload silencieuxDéfinissez toujours post_max_sizeupload_max_filesize
Éditer le mauvais php.iniLes modifications ne s’appliquent pas aux requêtes webUtilisez phpinfo() pour confirmer quel fichier est chargé par votre serveur web
Ne pas redémarrer le serveur après les modificationsLes anciens paramètres restent actifsRedémarrez toujours Apache ou PHP-FPM après édition
Laisser info.php sur le serveurExpose la configuration complète du serveur aux attaquantsSupprimez immédiatement après utilisation
Définir allow_url_include = OnActive les attaques par inclusion de fichiers distants (RFI)Gardez toujours ceci Off

10. Conclusion

Maîtriser la configuration php.ini est une compétence fondamentale pour tout administrateur système ou développeur web. Les bons paramètres peuvent faire la différence entre un serveur lent et vulnérable et un environnement rapide, sécurisé et prêt pour la production.

Pour résumer les points clés à retenir :

  • Toujours sauvegarder php.ini avant d’apporter des modifications
  • Identifier le bon fichier — CLI et les SAPI de serveur web utilisent souvent des fichiers php.ini différents
  • Ajuster les limites de ressources (memory_limit, max_execution_time, upload_max_filesize) en fonction des besoins de votre application
  • Renforcer la sécurité en désactivant les fonctions dangereuses, en masquant les informations de version et en restreignant l’accès aux fichiers
  • Activer OPcache pour des gains de performance significatifs
  • Ne jamais afficher les erreurs en production — les enregistrer à la place
  • Redémarrer votre serveur web après chaque modification et vérifier avec phpinfo() ou php -i

L’environnement d’hébergement que vous choisissez joue également un rôle majeur dans le contrôle que vous avez sur la configuration PHP. Avec les Serveurs Dédiés d’AlexHost, vous bénéficiez d’un accès complet et sans restriction à la configuration PHP de votre serveur — idéal pour les applications à fort trafic avec des exigences complexes. Pour les projets plus petits ou les équipes qui commencent tout juste, les plans d’Hébergement Web Partagé offrent un environnement géré où de nombreux paramètres PHP sont pré-optimisés pour vous.

Revisitez régulièrement votre configuration php.ini à mesure que votre application évolue, que les versions PHP sont mises à jour et que vos modèles de trafic changent. Un environnement PHP bien réglé n’est pas une configuration unique — c’est une pratique continue qui apporte des dividendes en termes de performance, de fiabilité et de sécurité.