2010-01-04 5 views
0

Erreur fatale: taille maximale autorisée pour la mémoire de 33554432 octets épuisé (a essayé d'allouer 40000 octets) sur la ligne 62Comment changer l'amout autorisé de la mémoire allouée?

dans/stockage monté/home20a/sub001/sc20063-GJYD/[...] Il semble que le PHP -script me permet seulement d'allouer 32 Mo à la mémoire? C'était avec un example image pour tester ce qui se passerait si un utilisateur essayait de télécharger une grande image.

Ma question est: Comment puis-je prédire que cela se produira, puis alerter l'utilisateur que l'image était trop grande au lieu de retourner cette erreur? C'est un moment depuis que je l'ai testé, mais je pense que j'ai essayé à la fois try-catch et @, mais ils ont tous les deux échoué car c'est une erreur fatale. La taille de l'image d'exemple est seulement de 1 Ko, donc cela ne fonctionnera pas en vérifiant cette valeur.


Je pense que je résolu mon problème, je peux vérifier la largeur de $ et $ hauteur de l'image, puis avertir l'utilisateur si l'image est trop grande, mais j'ai une autre question: Comment puis-je changer l'amout autorisé de la mémoire allouée? Je suppose que mes utilisateurs vont essayer d'afficher de nombreuses images haute résolution. J'ai essayé ini_set("memory_limit", $bignumber), mais cela ne fonctionne pas.

+0

Je me demande avec le message d'erreur, comme il est dit a essayé d'allouer 40000 octets, ce qui est taille de mémoire inférieure à la taille autorisée 33554432 octets. Comment cela peut-il être résolu en augmentant la limite de mémoire. J'ai atterri ici car j'ai eu le même problème et je pense que ce n'est pas la solution à ce problème. Quelqu'un s'il vous plaît éduquez-moi si je parle comme noob. –

Répondre

1

Pour modifier le memory_limit, vous devez éditer la directive memory_limit dans votre fichier php.ini - cela peut également être fait dans VirtualHost de votre Apache, si vous ne voulez pas que la modification soit effective pour l'ensemble de votre serveur , mais seulement pour un site web.

Mais vous ne pouvez pas toujours faire - vous devez être administrateur de votre serveur ...

BTW, vous pouvez jeter un oeil à How to change configuration settings.


Une autre possibilité pourrait être d'utiliser ImageMagick, et son exécutable convert, en utilisant l'un des Program execution Functions. De cette façon, le redimensionnement de votre image ne serait pas fait par PHP.

Mais, ici, cela signifie que vous dépendez d'un programme externe ...

+0

* memory_limit * est * PHP_INI_ALL * modifiable. – Gumbo

+0

Je n'ai pas accès au fichier php.ini. – Phoexo

0

Vous devez faire dans le fichier de configuration php.ini: memory_limit.

1

Vous pouvez également modifier la taille de mémoire autorisée via ini_set, mais le mode sans échec ou le correctif suhoshin peut être block it. Configurez la taille de mémoire nécessaire dans php.ini à la directive memory_limit.

0

Modifier les paramètres de votre fichier php.ini ou vous pouvez également utiliser un .htaccess (sinon sur l'hébergement Windows) avec la ligne suivante dans le:

php_value memory_limit 32M 

La solution .htaccess peut vous hep si vous N'avez pas accès à votre php.ini ou si vous souhaitez modifier ce paramètre dans une zone particulière de votre site. Dans mon exemple, la limite est portée à 32 Mo. Notez que certains hôtes ne le supporteront pas ou ne prendront pas en charge de très grandes valeurs (en particulier dans les environnements d'hébergement partagés).

0

Essayez avec

ini_set("memory_limit","50M"); 

Peut-être que votre $bignumber n'est pas spécifiée en méga-octets (d'où le M).

+0

C'est. [15 caractères] – Phoexo

1

Si vous voulez augmenter la limite de mémoire, cela doit être fait avant le démarrage de l'interpréteur (c.-à-d.vous devez le changer dans le fichier php.ini - ne pas utiliser ini_set).

« Je pense que je résolu mon problème, je peux vérifier la largeur de $ et $ hauteur de l'image, »

GD getimagesize retourne les valeurs qui donneront carte à l'utilisation de la mémoire du bitmap GD, mais vous devriez peut-être penser à limiter la taille de téléchargement et la taille post-max avant que le fichier arrive à PHP

C.

+0

Comment modifier la limite de mémoire lorsque je n'ai pas accès au fichier php.ini? – Phoexo

+0

Comme pour les autres articles, il est possible de modifier certains paramètres dans .htaccess usnig php_value - mais généralement, vous ne pouvez modifier que les valeurs qui peuvent être modifiées après le démarrage de PHP. – symcbean

Questions connexes