6 votes

Mémoire PHP épuisée

Une idée de la raison pour laquelle j'obtiens ....

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

allouer 9792 octets) dans /home/frich/public_html/creation/systemc/sMain/upload_image.php sur la ligne 77

sur la ligne suivante

$oldImage = imagecreatefromjpeg($img);

Le php saisit une image à partir d'un formulaire HTML et la redimensionne.

Fonctionne parfaitement bien s'il s'agit d'un petit fichier. C'est-à-dire quelques centaines de Ko.

J'ai essayé avec un fichier plus grand car je veux un maximum de 4mb. L'image avec laquelle je reçois une erreur est d'environ 2 Mo.

Merci d'avance

12voto

Shailender Ahuja Points 116

Vous obtenez l'erreur

""""""""""""""""""""""""
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

allocate 9792 bytes) in /home/frich/public_html/creation/systemc/sMain/upload_image.php on line 77
""""""""""""""""""""""""

Il montre que soit vous utilisez un hébergement partagé parce que la limite de mémoire de votre serveur est de 32 Mo.

Vous devez augmenter votre limite de mémoire comme indiqué ci-dessus par "Pekka" et "MartyIX".

mais comment le faire, il y a trois façons de le faire.

1er. demandez à votre hébergeur d'augmenter votre limite de mémoire,

ils l'augmenteront jusqu'à 48MB maximum, ce qui est la restriction de toute société d'hébergement pour les comptes d'hébergement mutualisés.

2ème. télécharger un fichier php.ini

avec écrit "memory_limit = 100M et max_memory = 100M".

vous pouvez changer 100M en n'importe quelle taille que vous voulez mais cela doit être dans la limite pour ne pas utiliser des ressources supplémentaires du serveur sinon votre compte peut être suspendu par votre société d'hébergement.

LIMITATION : cette option peut ne pas fonctionner correctement sur tous les hébergements car parfois ce code peut être bloqué par l'administrateur afin que les ressources du serveur soient consommées de manière LIMITEE.

3ème télécharger un ".htaccess"

écrit dedans "php_value memory_limit 32M"

o

par défaut, il est disponible dans le répertoire web de votre hébergement, alors vous pouvez d'abord le télécharger car il a aussi d'autres paramètres. Téléchargez-le, ouvrez-le avec le bloc-notes et écrivez "php_value memory_limit 32M".

et

4ème option permettant d'ajouter un code PHP à votre page

"ini_set('memory_limit', '32M') ;" (Je ne l'ai pas encore testé, mais il peut fonctionner correctement)

Merci et salutations........

7voto

Pekka 웃 Points 249607

L'image que vous essayez de traiter est trop grande pour la limite de 32 Mo de mémoire dont dispose votre script.

Le redimensionnement d'une image prend au moins

(width in pixels) x (height in pixels) x 3 (or 4)

octets (1 octet chacun pour le rouge / le vert / le bleu, éventuellement un octet supplémentaire pour la transparence)

Vous devez augmenter le memory_limit sur le serveur, ou demandez à l'administrateur de le faire.

32MB est une valeur assez décente et commune, cependant - vous n'aurez peut-être pas de chance si vous êtes sur un hébergement partagé.

Alternativement, si possible sur votre serveur, utilisez ImageMagick dont la consommation de mémoire n'est pas prise en compte dans le calcul de la memory_limit .

0voto

Monkeyarmada Points 1

En fonction de votre configuration php, vous pourriez être en mesure d'augmenter la limite de mémoire pour le script avec ini_set() ; Par exemple,

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

Je l'ai utilisé à plusieurs reprises pour des tâches de traitement d'images, bien que les fichiers de 4 mégaoctets représentent une charge assez lourde pour un serveur web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X