web-dev-qa-db-fra.com

Erreurs de mémoire lors du téléchargement de médias, Wordpress ne peut utiliser plus de 96 millions de cartes (alors qu'il en reste 512 disponibles!)

Je suis conscient qu'il s'agit d'un problème connu, mais je n'ai pas pu y remédier à l'aide des informations trouvées dans les forums d'assistance WPAnswers et Wordpress.

Dans mon installation sur un seul site Worpdress, l’éditeur de média jette toujours une erreur sur moi.

    out of memory (allocated 99614720) (tried to allocate 3760 bytes) 

la quantité de mémoire allouée est à peu près toujours la même - cela devrait être environ 96Mo ... mais sur mon serveur, la limite de mémoire php était de 512Mo, la taille de post est de 12M, la taille maximale de téléchargement 8M

c'est un serveur VPN et il y a 1,5 Go de mémoire!

Wordpress renvoie également l'erreur sur des images de 300 à 400 Ko et moins.

J'ai essayé d'utiliser

    define('WP_MEMORY_LIMIT', '128M');

ou

   define('WP_MAX_MEMORY_LIMIT', '128M');

mais aucun de ceux-ci (seuls ou ensemble) n'a fonctionné, en fait l'erreur renvoyée était toujours la même et j'avais l'impression que Wordpress ignorait les deux. J'essayais aussi d'autres paramètres, l'erreur était toujours la même et la quantité de mémoire allouée davantage moins le même

J'ai essayé de modifier les paramètres php, par exemple en abaissant la limite de mémoire à 128 Mo ou en ramenant à 256 Mo, en redémarrant le service http (Apache) et en redémarrant tout le serveur, mais rien ne change

J'ai procédé à la désactivation des plugins, mais la seule façon pour eux de ne pas sembler responsables en dernier ressort du problème.

J'ai décidé de modifier la ligne 257 du fichier media.php dans le dossier wp-includes, car les erreurs venaient toujours de la ligne 258 qui a été exécutée par la suite.

   @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );

J'ai remplacé WP_MAX_MEMORY_LIMIT par des valeurs supérieures à 96 Mo, par exemple 128 Mo ou 256 Mo

mais quoi qu'il en soit, la mémoire allouée n'a jamais dépassé 96 Mo. J'ai essayé d'abaisser le WP_MAX_MEMORY_LIMIT à des valeurs telles que 16M, 32M ... rien en dessous de 96. Eh bien! Dans ce cas, la mémoire allouée était inférieure, car en fait, je fixais une limite inférieure, mais comment se fait-il que ce ne puisse être plus de 96? Malgré tout, je ne comprends pas pourquoi wordpress prend autant, mais néanmoins, pourquoi je ne parviens pas à régler sur 128 et à voir si les problèmes sont finalement résolus? Je rencontre uniquement des problèmes avec le téléchargeur d'images.

J'ai même essayé d'utiliser

    @ini_set( 'memory_limit', '128M' );

dans mon wp-config mais encore une fois, cela ne change pas la limite de 96M ... mais il est capable de la baisser si je règle une valeur inférieure à 96 (les erreurs de mémoire résultantes indiqueront les valeurs correspondantes)

J'ai lancé phpinfo à partir de mon installation Wordpress et la mémoire disponible est bien celle qui est définie sur le serveur ... 512M! donc je ne comprends pas pourquoi Wordpress semble utiliser moins que cela, peu importe ce que

des indices?

je vous remercie

1
unfulvio

Vous regardez le problème de la mauvaise façon. L'erreur que vous voyez n'est pas une erreur venant de WordPress, c'est une erreur PHP.

Quelque part, quelque part, quelque chose limite la limite de mémoire à 96M, et ce n’est pas WordPress qui le fait .

Voici la chose: WordPress ne peut pas réellement limiter la mémoire sur la plupart des serveurs. Je sais qu'il essaie d'augmenter la limite en utilisant ini_set et ainsi de suite, mais il s'agit davantage d'une solution au cas par cas. Parfois, cela peut augmenter la limite. La plupart du temps, PHP ignore simplement cette ligne.

Vous comprenez également mal le fonctionnement de la mémoire. Ceci est clairement indiqué par la ligne "Wordpress pose également l'erreur sur des images de 300-400K et moins". La taille de l'image compressée n'a que peu ou rien à voir avec la taille que prend l'image non compressée en mémoire. C'est tout au sujet de la résolution. Les mégapixels comptent. Un pixel prend 4 octets. 8 millions de pixels (8 mégapixels) prennent 32 mégaoctets de mémoire à représenter, et la taille du fichier JPG compressé résultant est sans importance. WordPress doit également conserver quelques copies de l'image en mémoire, l'original à partir duquel elle fonctionne et un autre dont il crée les versions modifiées. Alors oui, beaucoup de mémoire est nécessaire.

Mais encore une fois, WordPress ne peut pas définir la limite de mémoire dans la plupart des cas. Donc, quelque chose le limite à 96M. Ce qui limitera sévèrement la taille maximale des images avec lesquelles WP peut fonctionner. Jusqu'à ce que vous trouviez d'où vient cette limitation de 96M, consultez le code principal de WordPress et c’est un peu une perte de temps ici.

4
Otto