Guide des technologies

Augmenter la mémoire PHP pour corriger « PHP Fatal error: Out of memory »

5 min read DevOps Mis à jour 09 Oct 2025
Corriger « PHP Out of memory » en augmentant la mémoire
Corriger « PHP Out of memory » en augmentant la mémoire

Erreur observée :

*PHP Fatal error: Out of memory (allocated 49545216) (tried to allocate 77824 bytes) in /home/xxxxx/public_html/xyz/admin.php(1758) on line 40*

Pourquoi cela arrive

PHP limite la mémoire utilisable par chaque processus PHP via la directive memory_limit. Lorsqu’un script dépasse cette limite, PHP déclenche une erreur fatale et le script s’arrête. Cela peut arriver après une augmentation du trafic, une tâche lourde (import, export, image processing), ou une fuite/gestion inefficace de la mémoire dans le code.

Important : redémarrer Apache (httpd) peut libérer de la mémoire et rétablir le service immédiatement. C’est un correctif ponctuel, pas une solution définitive.

4 méthodes pour augmenter la mémoire PHP

  1. Modifier php.ini
  • Localisez le php.ini réellement lu par PHP. Créez un fichier check.php à la racine contenant :
  • Ouvrez ce fichier dans un navigateur. Cherchez « Loaded Configuration File » pour connaître le chemin (souvent /usr/local/lib/php.ini).
  • Éditez php.ini et modifiez la directive memory_limit. Exemples :
memory_limit = 12M
memory_limit = 16M
memory_limit = 24M

Augmentez progressivement jusqu’à ce que l’erreur disparaisse.

  1. Augmenter depuis le script

Si vous n’avez pas accès à php.ini, ajoutez dans le script problématique (par exemple admin.php) au début :

ini_set('memory_limit', '32M');

Cela s’applique au processus courant et n’affecte pas la configuration globale.

  1. Via .htaccess

Sur certains serveurs Apache+mod_php, ajoutez dans .htaccess :

php_value memory_limit 32M
  1. Pour WordPress — wp-config.php

Dans un site WordPress, ajoutez ou modifiez :

define('WP_MEMORY_LIMIT', '32M');

Cela demande à WordPress d’augmenter la limite pour les processus PHP exécutant WordPress.

Note : certains hébergeurs restreignent la valeur maximale. Si rien ne change, contactez votre hébergeur.

Diagnostic : trouver le script responsable

Augmenter la mémoire résout l’urgence. Mais identifier et corriger le script évite la régression.

  • Activez les logs d’erreur PHP et observez les messages : error_log et display_errors en environnement de test.
  • Insérez des traces : error_log('Checkpoint X - memoria: '.memory_get_usage()); ou memory_get_peak_usage(true) pour mesurer.
  • Profiling : utilisez Xdebug (profiling), ou un profiler tel que Tideways/Blackfire si disponible.
  • Vérifiez les tâches cron, imports/export, plugins WordPress récents.
  • Reproduisez en local avec les mêmes données pour debugging pas en production.

Approches alternatives et bonnes pratiques

  • Optimiser le code : libérer les variables inutiles (unset()), éviter les boucles qui accumulent des objets, utiliser des générateurs pour traiter de grands jeux de données.
  • Pagination / streaming : traitez par lots (chunks) au lieu de charger tout en mémoire.
  • Caching : évitez les recomputations lourdes.
  • Mettre à jour PHP et extensions : les versions récentes sont souvent plus performantes en mémoire.
  • Si possible, exécutez les tâches lourdes hors requête web (worker, queue, CLI) qui ont souvent une limite mémoire plus élevée.

Quand augmenter la limite échoue

  • L’hébergeur impose un plafond global. Seul le support peut changer cela.
  • Fuite mémoire dans une extension PHP ou une librairie native. Le symptôme persiste même après hausse.
  • Consommation mémoire qui croît linéairement : signe d’une accumulation non contrôlée.

Mini-méthodologie (playbook rapide)

  1. Redémarrer Apache pour restaurer le service.
  2. Lire le log d’erreur PHP et noter le script et la ligne.
  3. Reproduire en local ou en staging.
  4. Mesurer l’utilisation mémoire (memory_get_peak_usage).
  5. Augmenter temporairement memory_limit pour continuer l’accès.
  6. Corriger le code ou déplacer la tâche vers un processus CLI/worker.
  7. Remettre la limite à une valeur raisonnable et surveiller.

Checklists par rôle

Administrateur système

  • Vérifier php.ini et version de PHP.
  • Adapter configuration du serveur (workers, prefork/pm settings).
  • Contacter l’hébergeur si besoin.

Développeur

  • Chercher fuites et objets lourds.
  • Ajouter testes unitaires pour fonctions gourmandes en mémoire.
  • Mettre en place profiling et monitoring.

Responsable produit

  • Valider l’impact fonctionnel et prioriser correctifs.
  • Planifier maintenance si nécessaire.

Exemples de snippets utiles

  • Dans un script PHP :
ini_set('memory_limit', '128M');
error_log('Peak memory: '.memory_get_peak_usage(true));
  • Dans .htaccess :
php_value memory_limit 64M
  • Dans wp-config.php pour WordPress :
define('WP_MEMORY_LIMIT', '64M');

Sécurité et confidentialité

Ne publiez jamais un fichier phpinfo() sur un site public. Il révèle des chemins et versions qui aident un attaquant. Supprimez check.php après usage.

Résumé

Augmenter memory_limit règle vite un blocage « Out of memory ». Mais c’est souvent un pansement. Diagnostiquez le script gourmand, optimisez le code ou exécutez la tâche en mode CLI/worker. Si vous êtes en hébergement mutualisé, le support peut imposer des limites — contactez-le.

1-ligne glossaire

  • memory_limit : directive PHP qui fixe la mémoire maximale qu’un script peut utiliser.
  • WP_MEMORY_LIMIT : constante WordPress pour demander une limite plus élevée.
  • phpinfo() : fonction qui affiche la configuration PHP et l’emplacement du php.ini.

Image Courtesy: Clarkandransom

Auteur
Édition

Matériaux similaires

Ajouter sites à la liste blanche Flash sur Windows RT
Tutoriel

Ajouter sites à la liste blanche Flash sur Windows RT

Photoshop CS5 sur Ubuntu 10.10 — guide
Linux

Photoshop CS5 sur Ubuntu 10.10 — guide

Télécharger films et séries Netflix hors ligne
Streaming

Télécharger films et séries Netflix hors ligne

Corriger l'erreur Firefox déjà en cours d'exécution
Dépannage

Corriger l'erreur Firefox déjà en cours d'exécution

Tim Cook : apprendre le code vaut mieux que l'anglais
Éducation

Tim Cook : apprendre le code vaut mieux que l'anglais

Accélérer les téléchargements sur Windows 10
Windows

Accélérer les téléchargements sur Windows 10