Problème de mémoire avec GD2

Eléphanteau du PHP | 24 Messages

03 nov. 2008, 14:09

Bonjour,

J'ai un script utilisant la librairie GD2 et qui fait :

Code : Tout sélectionner

$src_im = imagecreatefromjpeg( $img_url );
Hors avec une image j'obtiens le message d'erreur suivant :
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 10240 bytes) in /home/machin/www/e_lib/redimimage.php on line 15

Avez-vous une idée du pourquoi ?

Merci.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 15:28

Le serveur que tu utilises limite l'utilisation mémoire de chaque script PHP à 16Mo (soit 16777216o).
ton erreur signifie que ton script a essayé d'allouer 10240 octets en plus, ce qui a fait que la somme totale à dépassée 16Mo et a donc déclenché une erreur.

Pour changer ça, essaye de faire une nouvelle page PHP blanche qui ne contient que le code suivant :
<?php
echo "Avant :". ini_get('memory_limit') ."<br />";
ini_set('memory_limit', 128M);
echo "Après :". ini_get('memory_limit') ."<br />";
Et donne nous le résultat.

Si tu as un changement, il est possible de modifier cette taille limite et la changer pour ce script. Si tu as les mêmes valeurs avant et après, ton hébergeur ne permet pas de modifier ces valeurs et tu ne pourras pas faire ton traitement d'image.

Si ton serveur est un serveur dédié, il existe une autre solution, mais j'attend que tu me le confirme, car une configuration par défaut à 16M me parrait très très basse.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 24 Messages

03 nov. 2008, 15:33

Ok merci, je pensais que ça signifiait 10240 octets en tout d'où mon incompréhension.
J'ai donc changé memory_limit à 32 Mo et ça fonctionne.

Merci !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 15:41

Modération :
chatlumo, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer