Les scripts PHP sont rapides à développer et très utilisés, mais ils ont aussi un inconvénient important : un script mal écrit peut consommer énormément de mémoire et affecter les autres services du serveur.
C'est pour cela que PHP définit une limite de mémoire par script avec le paramètre memory_limit.
À quoi sert le paramètre memory_limit de PHP ?
La valeur memory_limit s'applique script par script. Autrement dit, elle fixe la quantité maximale de mémoire qu'un seul script PHP peut utiliser.
La documentation officielle de PHP explique que ce paramètre définit la mémoire maximale, en octets, qu'un script peut consommer et qu'il aide à éviter qu'un script mal conçu n'épuise toute la mémoire disponible du serveur.
Par exemple, si la limite est fixée à 128M, sept scripts peuvent utiliser chacun 80M sans dépasser la limite, même si leur consommation totale dépasse largement 128 Mo. En revanche, si un seul script tente d'utiliser 130M, il échouera avec une erreur comme :
Fatal error: Allowed memory size of x bytes exhausted (tried to allocate x bytes)
ou :
PHP Fatal error: Out of memory (allocated x) (tried to allocate x bytes)
Comment augmenter la limite de mémoire PHP dans DirectAdmin
La première question à se poser est toujours de savoir si cette consommation est raisonnable. Si ce n'est pas le cas, la meilleure solution consiste souvent à corriger le script plutôt qu'à augmenter la limite. Si la charge est légitime, vous pouvez alors ajuster la configuration du VPS ou du serveur.
Suivez ces étapes :
Étape 1 : repérez le fichier de configuration PHP utilisé. Une façon simple de le vérifier est :
/usr/local/bin/php --ini | grep 'Loaded Configuration File'
Si vous utilisez la version PHP CLI par défaut, le fichier se trouve souvent ici :
/usr/local/lib/php.ini
Étape 2 : modifiez la ligne memory_limit et définissez la valeur souhaitée. Si elle n'existe pas, ajoutez-la :
memory_limit = 128M
Adaptez la valeur aux besoins réels de votre application, puis enregistrez le fichier. Depuis une session SSH, vous pouvez utiliser un éditeur comme nano.
Étape 3 : redémarrez Apache ou le service PHP concerné pour appliquer la modification.
Autres paramètres PHP liés
Si vous devez aussi augmenter la taille maximale des données envoyées en POST, vérifiez :
post_max_size = 8M
Si vous devez autoriser des fichiers plus volumineux à l'envoi, vérifiez :
upload_max_filesize = 2M
Conclusion
La limite de mémoire PHP existe pour une bonne raison. Sans elle, un script mal écrit pourrait monopoliser toutes les ressources du serveur. Mais si votre environnement est suffisamment dimensionné et que votre application a réellement besoin de plus de mémoire, vous pouvez augmenter cette limite en modifiant le bon fichier de configuration avec prudence.