web-dev-qa-db-fra.com

La mise à jour au-delà de WordPress 4.2.1 donne "la taille de mémoire autorisée est épuisée"

J'ai un serveur Windows sous Plesk comportant plusieurs sites WordPress. La version PHP sur chaque version est 5.5.26.

L'un, qui utilise les valeurs par défaut pour PHP, met à jour la dernière version (4.2.3) sans problème, tandis que les autres sites, qui tentent de mettre à jour leurs versions 4.2.2 et 4.2.3, génèrent le message d'erreur suivant:

Erreur irrécupérable PHP: la taille de mémoire autorisée de 268435456 octets est épuisée (vous avez tenté d'allouer 65488 octets) dans C:\Inetpub\vhosts\butterflyvista.com\sous-domaines\pastryfblog\wp-admin\inclut\file.php à la ligne 159

Oui, j'ai fait des recherches sur cette erreur et je connais les solutions recommandées. Il existe un certain nombre de pages sur ce sujet, , celui-ci faisant partie de celles-ci; et d'autres deux , trois . Voici quelques informations intéressantes issues de ce message d'erreur:

La valeur par défaut de Plesk/PHP est de 128 Mo. Mettre à jour la limite à 256 Mo ne fait rien. La mise à jour du site à 512 Mo ne fait également rien. Le processus de mise à jour nécessite nulle part près de cet espace.

Oui, j'ai édité le fichier wp-config.php et réglé

/** Memory Limit: Increase to avoid update errors. */
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '512M');

Remarque: les valeurs par défaut sont 128M et 256M. J'ai également mis à jour le memory_limit pour PHP à 512 Mo, au lieu de 128 M.

L'échec n'a rien à voir avec le contenu, car je suis en train de déboguer ce problème sur l'un de mes sites de test qui n'a pas de commentaire, pas de page et pas de publication, de sorte que les entrées de base de données sont à zéro. J'ai désactivé puis supprimé tous les plugins et tous les thèmes ajoutés.

J'ai ajouté le widget d'erreur PHP pour aider à résoudre le problème. Ce message vient tout juste d'écrire exactement la même erreur dans le fichier journal, donc aucune aide. Autant que je sache, il n'y a pas de journaux d'erreurs WordPress. EventViewer ne serait pas utile ici.

Je ne pense pas que j'ai une installation corrompue. Trop d'autres personnes ont exactement le même problème. Je sais que mon serveur va bien, car un autre site met à jour correctement, domaine différent sur le serveur, mais les mises à jour bien J'ai vérifié les paramètres d'hébergement et PHP entre le site de travail et les sites qui ne travaillaient pas. Je n'ai constaté aucune différence.

Je ne pense pas, sur la base de la tentative d'autres personnes, qu'une installation manuelle serait utile. Mon problème est que je veux comprendre les causes de mon problème et comment résoudre de manière positive le processus de mise à jour automatique.

Il semble vraiment qu’un bogue apparaissant occasionnellement avec WordPress. Le problème vient de la v4.1 +, car d’autres se plaignent que depuis cette version, le problème a commencé. J'étais bien jusqu'à et y compris 4.2.1.

En ce qui concerne travailler et ne pas travailler, ici est bon et ici est un site qui ne met pas à jour. D'autres personnes ont posé des questions sur des liens sur d'autres articles similaires, c'est pourquoi je l'inclue ici, mais si vous regardez un site WordPress qui fonctionne bien, rien ne s'affiche, je pense, car le problème se situe peut-être dans les composants internes de WordPress.

Les autorisations me traversaient la tête, mais j’ai vérifié que et WP constituait un inconvénient majeur dans le signalement des problèmes d’autorisation.

Pensées? Ai-je oublié quelque chose dans testing/debuggin?

1
Sarah Weinberger

Modifiez la ligne 149 dans fichier.php comme décrit dans ce fil de discussion: https://wordpress.org/support/topic/unable-to-update-plugins-after-upgrade-to-42

l'a corrigé pour moi (sur un hôte linux).

edit: il suffit de lire que vous êtes sur Windows: quelqu'un a également posté un correctif qui s'applique aux hôtes Windows (apparemment plus compliqué parce que des barres obliques inverses sont utilisées dans les chemins de fichiers).

donc votre ligne 149 dans file.php devrait se lire:

if ( empty( $filename ) || '.' == $filename || DIRECTORY_SEPARATOR == $filename ) {

bonne chance :)

2
patrick