Tips: Résoudre le problème de la limite des octets alloués

Bonjour à tous,

Ceux qui touchent un peu à la manipulation d’images en PHP (en utilisant ou non ma classe) auront certainement été confronté à une satanée ligne:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 15488 bytes)

Jusqu’à présent je me contentais alors, pour pallier ce problème, de limiter la taille de mes images avant de les uploader. Je conservais ainsi des fichiers de taille correcte pour un agrandissement sur le Web et faisait des miniatures tantôt classiques, tantôt farfelues.

Mais ce n’était là qu’on moyen d’esquiver le problème…

C’est pourquoi, après avoir longtemps esquivé ce problème, je me suis résolu à chercher la solution. Solution qui me paraissait peu évidente puisqu’étant chez divers hébergeurs payants mais jamais comme administrateur système d’un serveur ou utilisateur avec suffisamment de droits que pour accéder au php.ini.

C’est alors qu’au détour d’une page web j’ai découvert LA solution:

  1. span class= »st0″>"memory_limit", "512M");
  2. //…

Cette solution n’était en fait pas si difficile que cela… Il fallait juste savoir qu’il est possible de modifier pour la durée d’exécution d’un script la valeur d’une des variables de php.ini et tout cela en ajoutant juste une ligne dans mon cas: en haut de mon fichier image.class.php

Cela dit, il est également possible de modifier la valeur d’une (ou plusieurs) valeurs du php.ini pour tous les fichiers d’un répertoire en éditant le fichier .htaccess pour y ajouter:


php_value memory_limit 512M

Malheureusement, tout cela serait trop beau que cela marche partout… Ainsi chez certains hébergeurs, et chez d’autres non… Il ne vous reste plus qu’à changer d’hébergeur dans ce dernier cas!

Tags: , , , , , ,

Un commentaire pour “Tips: Résoudre le problème de la limite des octets alloués”

  1. yannick dit :

    Salut!
    C’est vrai que c’est bien pratique de pouvoir changer la taille de la mémoire en cours d’exécution.
    Mais tu as cherché à voir ce qui occupait ainsi la mémoire?
    Pour une certaine taille d’image, il y a besoin de quelle taille mémoire pour la variable gd ?