Quantcast
Channel: Benjamin Agullana » Serveur
Viewing all articles
Browse latest Browse all 2

Augmenter PHP memory_limit

0
0

Aujourd’hui je vais étaler 3 façons très simple pour changer la valeur de « memory_limit« , indispensable dans l’exécution de gros script ou de grosses requêtes SQL. Les 3 astuces qui seront présentées sont toutes 3 différentes mais permettent d’arriver au même résultat. Je présenterai aussi les avantages de chacune.

Ah oui mais au fait pourquoi cet article ? Tout simplement pour tout ceux qui en on marre des erreurs telles que :

PHP Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate YYY) in un_fichier.php

Allez, c’est par là que ca se passe !

En fait, si vous obtenez une erreur de ce genre c’est tout simplement car votre script est trop gros pour votre serveur Apache. Il faut savoir que d’origine, memory_limit est définie à 8MB,dans le fichier php.ini (c’est dans ce fichier que sont définies toutes les variables d’Apache) ,ce qui est relativement peu quand on a une grosse base de données par exemple et que l’on veut exécuter des requêtes importantes.

La solution ? Augmenter cette valeur !

1ere façon : modifier php.ini

Si vous avez accès au fichier php.ini de votre serveur ouvrez-le avec votre editeur de texte préféré (en local par exemple, avec WAMP, il se trouve dans wamp/Apache2/bin/php.ini).

Là, faites une recherche (CTRL + F généralement) avec le mot clé « memory_limit« . Une fois le mot trouvé, remplacé la valeur par :

memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)

(ce qui suit le ; est un commentaire, on s’en fiche ;) ). 32M est une valeur raisonnable.

Mais vous pouvez ajustezr la valeur à vos souhaits, cependant sachez que plus vous réglerez une valeur élevée plus votre site peut s’exposer à du danger. En effet, avec cette méthode vous permettez l’exécution de gros script ou grosses requêtes SQL sur tout votre site, du coup si une personne malveillante voulez soutirer un maximum de données elle pourrait le faire.

Pensez à relancer votre serveur Apache pour que les modifications prennent effet !

2eme façon : modifier .htaccess

Cette méthode est souvent nécessaire si vous n’avez pas accès au fichier php.ini (la plupart du temps c’est le cas si vous êtes chez un hébergeur). La solution est de modifier la valeur du memory_limit en insérant une petit ligne de code dans votre fichier .htaccess (si vous n’en n’avez pas, créez-en un avec votre éditeur de texte, renommez le .htaccess).

Je vous conseille de créer ce fichier spécifiquement dans le dossier où se trouve le fichier qui détient le script trop volumineux et donc auteur de votre visite sur mon blog (j’espère que vous me suivez :p ).

Bref voici la ligne à ajouter dans le fichier :

php_value memory_limit 64M

Ce changement sera local, et s’appliquera donc seulement à l’ensemble des script présents dans les fichiers enfants de votre dossier contenant le fichier .htaccess (relisez bien c’est compréhensible, si si, je vous assure ! ).

3eme façon : changer memory_limit dans votre script php !

Cette dernière méthode est la mieux adaptée à mon sens, car c’est la moins dangereuse. En effet, nous allons allouer plus de place à l’exécution d’un script bien précis puisque nous allons insérer une ligne de code PHP qui va permettre de modifier la valeur de la variable seulement à l’exécution dudit script ! De plus, vous pouvez la faire sans avoir besoin des permissions d’accès au php.ini ou .htaccess.

Voici le bout de code (à placer dans votre fichier php, au dessus du satané script volumineux) :

ini_set(‘memory_limit’,’64M’);

Voilà c’est tout pour aujourd’hui, un grand merci à MDLog:/sysadmin. Si vous allez la moindre question posez là !


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images