web-dev-qa-db-fra.com

Qu'est-ce qui pourrait causer POST wp-admin/async-upload.php pour renvoyer JSON> et <HTML?

Dans l'onglet Multimédia, le téléchargement d'un fichier image valide entraîne l'affichage d'une "erreur HTTP".

Le rechargement de l'onglet Média indique que l'image a bien été téléchargée et redimensionnée.

Les outils de débogage du navigateur indiquent que lors du téléchargement, le navigateur crée un POST vers wp-admin/async-upload.php. Le serveur répond avec une erreur 500. Le corps de la réponse, cependant, est suspect. La première partie est une structure JSON. La structure JSON est immédiatement suivie par un document HTML portant le titre "Erreur Wordpress" mais un corps vide.

Aucune entrée dans le journal des erreurs du serveur Web (Apache) et le mode de débogage WP et l'augmentation de PHP erreur/avertissement n'ont pas été utiles. La désactivation de tous les plugins n’a aucun effet sur l’erreur. Essayé de basculer entre Gd et ImageMagick également sans succès.

Versions logicielles pertinentes:

  • Wordpress 4.2.2.
  • PHP 5.5.12-2ubuntu4.4.
  • Ubuntu Utopic

Des idées sur ce qui pourrait amener async-upload.php à renvoyer à la fois du JSON et un document d'erreur HTML et/ou comment je pourrais le déboguer davantage?

4
astletron

J'ai eu le même problème et je n'ai trouvé aucune information dans ma sortie de débogage.

Cela a fonctionné, que DOING_AJAX n'était pas défini (je ne sais pas pourquoi).

Changer le début de async-upload.php de

if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
    define( 'DOING_AJAX', true );
}

à

define( 'DOING_AJAX', true );

a travaillé pour moi. Peut-être que j'examinerai plus en profondeur et trouverai la véritable cause fondamentale.

1
joernschellhaas

Ce n'est probablement pas un problème causé par WordPress, mais par les configurations et/ou les paramètres du serveur. 500 erreurs sont assez génériques et peuvent avoir différentes origines, il est donc difficile de donner la directive qui résoudra le problème. Soit dit en passant, le retour de JSON et HTML semble être courant quand cela se produit. Je ne sais pas trop où et ça se mêle, cela pourrait être ici . Je suis assez certain que cela se produit à cause d'un problème de mémoire.

Bien que cela ait probablement un rapport avec la mémoire, je ne peux pas en être sûr, car il n’ya pas assez d’informations disponibles pour être sûr à 100%. Voici donc une petite liste de contrôle, pas nécessairement exhaustive, à traiter:

  • limite de mémoire - votre PHP mémoire peut être sur le point de ne pas être assez, augmentez-la; mettre define( 'WP_MEMORY_LIMIT', '128MB' ); dans wp-config.php
  • .htaccess - corruption/problème; vérifie ça; éventuellement sauvegarder et le régénérer
  • PHP5 - certains hôtes ont eu des problèmes avec cela, bien que je ne l’aie pas vu depuis longtemps; essayez de mettre AddType x-mapp-php5 .php dans votre .htaccess
  • autorisations sur les fichiers - assurez-vous qu'elles sont correctes; si vous n'êtes pas sûr, réinstallez-les avec les correctes; article du codex: modification des autorisations de fichiers
  • permissions du dossier -
  • ré-uploader WP fichiers de base - bien que cela ne soit pas nécessaire si les deux dernières étapes sont effectuées correctement, mais qu'il existe parfois d'autres corruptions, il peut donc s'agir d'une étape supplémentaire prendre
  • Configuration Apache - assurez-vous que votre Apache est correctement configuré sur votre serveur, en fonction de vos besoins actuels et réels; par exemple. un des coupables semble être mod_security
  • vérifiez WP code personnalisé - donc ce que vous avez écrit ou avez été installé via des plug-ins; vous connaissez la routine, testez en désactivant et/ou en basculant sur le thème par défaut, etc.

Tous les éléments de la liste sont bien connus et documentés, vous pourrez donc, si nécessaire, trouver plus d'informations.

Last but not least, beaucoup de succès!

1
Nicolai

Dans le fichier wp-config.php (dossier racine de wordpress), vous devez activer le débogage.

Vous devez définir wp_debug à true .

Change define ('WP_DEBUG', false); à définit ('WP_DEBUG', true);

Enregistrez le fichier et actualisez le navigateur (je vous suggère d'utiliser ctrl + f5).

Vous verrez toutes les erreurs.

0
Rares P.

Dans mon cas (WP v5.0), c’était PHP problème de version (PHP v5.4). Passer à PHP v7.2 a résolu ce problème.

0
Krzysztof Przygoda