¿Qué puede causar que un POST a wp-admin/async-upload.php devuelva JSON y HTML?

17 jul 2015, 12:31:15
Vistas: 25.3K
Votos: 5

En la pestaña de medios, la carga de un archivo de imagen válido resulta en la visualización de "Error HTTP".

Al recargar la pestaña de medios se muestra que la imagen sí se cargó y redimensionó.

Las herramientas de depuración del navegador muestran que durante la carga, el navegador está haciendo un POST a wp-admin/async-upload.php. El servidor responde con un error 500. Sin embargo, el cuerpo de la respuesta es sospechoso. La primera parte es una estructura JSON. La estructura JSON está seguida inmediatamente por un documento HTML con el título "WordPress Error" pero con el cuerpo vacío.

No hay registros en el log de errores del servidor web (apache) y el modo de depuración de WP y el aumento de la verbosidad de errores/advertencias de PHP no han sido útiles. Deshabilitar todos los plugins no tuvo efecto en el error. También se intentó cambiar entre GD e ImageMagick sin éxito.

Versiones relevantes del software:

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

¿Alguna idea sobre qué podría causar que async-upload.php devuelva tanto JSON como un documento de error HTML y/o cómo podría depurar esto más a fondo?

4
Comentarios

¿Resolviste esto?

Nicolai Grossherr Nicolai Grossherr
28 jul 2015 11:00:26

He probado todas las sugerencias sin éxito. Me parece notable que WP forme completamente la respuesta JSON y luego escriba un documento de error. Parece que tendré que hacer una inmersión profunda en la depuración de WP para resolver esto.

astletron astletron
28 jul 2015 16:29:36

Qué lástima, estaba bastante seguro de que revisar la lista lo resolvería.

Nicolai Grossherr Nicolai Grossherr
28 jul 2015 17:08:02

Si cualquier parte de la respuesta te fue útil, entonces considera aceptarla. Consulta »Qué debo hacer cuando alguien responde mi pregunta?« y/o »Por qué es importante votar?«, más información sobre el modelo de [wordpress.se] está disponible en la [ayuda].

Nicolai Grossherr Nicolai Grossherr
9 nov 2015 14:10:09
Todas las respuestas a la pregunta 6
0

Tuve el mismo problema y no encontré ninguna información en mi salida de depuración.

Resultó que DOING_AJAX no estaba definido (no sé por qué).

Cambiar el inicio de async-upload.php de

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

a

define( 'DOING_AJAX', true );

funcionó para mí. Tal vez echaré un vistazo más profundo y encontraré la causa raíz real.

3 may 2018 14:38:59
1

Esto probablemente no sea exactamente un problema causado por WordPress, sino debido a configuraciones y/o ajustes del servidor. Los errores 500 son bastante genéricos y pueden tener diversos orígenes, por lo que es difícil dar una directiva que lo solucione. Por cierto, la devolución de JSON y HTML parece ser común cuando esto ocurre, no estoy seguro dónde se mezcla, podría ser aquí. Estoy bastante seguro de que esto ocurre debido a algún problema de memoria.

Aunque probablemente tiene que ver con la memoria, no puedo estar seguro, porque no hay suficiente información disponible para estar 100% seguro. Así que aquí tienes una pequeña lista de verificación, no necesariamente exhaustiva, para que la revises:

  • límite de memoria - tu memoria PHP podría estar justo al límite de no ser suficiente, auméntala; coloca define( 'WP_MEMORY_LIMIT', '128MB' ); en el archivo wp-config.php
  • .htaccess - corrupción/problema; revísalo; posiblemente haz una copia de seguridad y regenéralo
  • PHP5 - algunos hosts tuvieron problemas con esto, aunque no lo he visto en algún tiempo; prueba agregando AddType x-mapp-php5 .php en tu archivo .htaccess
  • permisos de archivos - asegúrate de que sean correctos, si no estás seguro, entonces reestablécelos con los correctos; artículo del codex: cambiando permisos de archivos
  • permisos de carpetas --
    • WP - verifica y si es necesario corrígelos; artículo del codex: cambiando permisos de archivos
    • servidor - a veces hay problemas, por ejemplo, con los permisos de la carpeta temporal de subidas
  • volver a subir los archivos núcleo de WP - aunque esto no debería ser necesario si los dos pasos anteriores se hacen correctamente, pero a veces hay otras corrupciones, por lo que podría ser un paso adicional a tomar
  • configuración de apache - asegúrate de que tu apache esté configurado correctamente en tu servidor, acorde a tus necesidades y requerimientos actuales; por ejemplo, un culpable común parece ser mod_security
  • revisar código personalizado de WP - es decir, lo que has escrito o instalado mediante plugins; ya conoces el procedimiento, prueba desactivando y/o cambiando al tema predeterminado, etc.

Todos los elementos de la lista son bastante conocidos y están documentados, por lo que encontrarás, si es necesario, más información disponible.

Por último pero no menos importante, ¡mucho éxito!

21 jul 2015 12:14:27
Comentarios

Pude solucionarlo desactivando el módulo mod_reqtimeout de Apache.

Bernhard Bernhard
16 ago 2018 09:13:54
0

En el archivo wp-config.php (en la carpeta raíz de WordPress) debes habilitar el modo de depuración.

Debes establecer wp_debug en true.

Cambia define('WP_DEBUG', false); por define('WP_DEBUG', true);

Guarda el archivo y actualiza el navegador (te sugiero usar ctrl+f5).

Verás todos los errores.

22 jul 2015 18:19:05
0

En mi caso (WP v5.0), fue un problema de versión de PHP (PHP v5.4). Cambiar a PHP v7.2 resolvió este problema.

13 dic 2018 00:07:35
0

Sugiero revisar el registro de errores del servidor web antes de buscar a ciegas.

En mi caso, encontré el siguiente mensaje de error:

2020/01/16 15:30:24 [error] 24844#24844: *206729 client intended to send too large body: 33962282 bytes, client: xxx.xxxx.xxx.xxx, server: example.com, request: "POST /wp-admin/async-upload.php HTTP/2.0", host: "example.com", referrer: "https://example.com/"

Lo que simplemente significa que el valor de client_max_body_size en nginx era demasiado bajo. WordPress solo verifica upload_max_filesize en la configuración de PHP, por lo que WordPress permite cargar archivos más grandes que client_max_body_size si ese valor es menor que upload_max_filesize.

16 ene 2020 16:41:05
0

Resolví esto aumentando el post_max_size de 8MB a 16MB

16 jun 2022 05:21:54