Cosa potrebbe causare un POST a wp-admin/async-upload.php che restituisce sia JSON che HTML?

17 lug 2015, 12:31:15
Visualizzazioni: 25.3K
Voti: 5

Nella scheda media, il caricamento di un file immagine valido risulta nella visualizzazione di "Errore HTTP".

Ricaricando la scheda media si vede che l'immagine è stata caricata e ridimensionata.

Gli strumenti di debug del browser mostrano che durante l'upload, il browser sta effettuando una richiesta POST a wp-admin/async-upload.php. Il server risponde con un errore 500. Il corpo della risposta, tuttavia, è sospetto. La prima parte è una struttura JSON. La struttura JSON è immediatamente seguita da un documento HTML con il titolo "Errore WordPress" ma con il corpo vuoto.

Non ci sono registrazioni nel log degli errori del webserver (apache) e la modalità debug di WP e l'aumento della verbosità degli errori/warning PHP non sono stati d'aiuto. La disattivazione di tutti i plugin non ha avuto effetto sull'errore. Ho provato anche a passare da GD a ImageMagick senza successo.

Versioni software rilevanti:

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

Qualche idea su cosa potrebbe causare async-upload.php a restituire sia JSON che un documento di errore HTML e/o come potrei eseguire ulteriori debug di questo problema?

4
Commenti

Hai risolto questo problema?

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

Ho provato tutti i suggerimenti senza successo. Mi sembra incredibile che WP formi completamente la risposta JSON e poi scriva un documento di errore. Sembra che dovrò fare un'analisi approfondita del debug di WP per risolvere questa questione.

astletron astletron
28 lug 2015 16:29:36

Peccato, ero abbastanza sicuro che seguire la lista avrebbe risolto il problema.

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

Se qualsiasi delle risposte ti è stata utile, considera di accettarla. Vedi »Cosa devo fare quando qualcuno risponde alla mia domanda?« e/o »Perché è importante votare?«, ulteriori informazioni sul modello [wordpress.se] sono disponibili nella [guida].

Nicolai Grossherr Nicolai Grossherr
9 nov 2015 14:10:09
Tutte le risposte alla domanda 6
0

Ho avuto lo stesso problema e non ho trovato alcuna informazione nel mio output di debug.

Si è scoperto che DOING_AJAX non era definito (non so il motivo).

Modificando l'inizio di async-upload.php da

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

a

define( 'DOING_AJAX', true );

ha funzionato per me. Forse approfondirò e troverò la vera causa radice.

3 mag 2018 14:38:59
1

Questo probabilmente non è esattamente un problema causato da WordPress, ma da configurazioni e/o impostazioni del server. Gli errori 500 sono piuttosto generici e possono avere varie origini, quindi è difficile fornire la direttiva unica che li risolverà. Tra l'altro, la restituzione di JSON e HTML sembra essere comune quando ciò accade, non sono sicuro dove e si mescola, potrebbe essere qui. Sono abbastanza sicuro che ciò accada a causa di qualche problema di memoria.

Sebbene probabilmente abbia a che fare con la memoria, non posso esserne certo, perché non ci sono abbastanza informazioni disponibili per esserne sicuri al 100%. Quindi ecco una piccola lista di controllo, non necessariamente esaustiva, da seguire:

  • limite di memoria - la memoria PHP potrebbe essere appena al limite di non essere sufficiente, aumentala; inserisci define( 'WP_MEMORY_LIMIT', '128MB' ); in wp-config.php
  • .htaccess - corruzione/problema; controllalo; possibilmente esegui un backup e rigeneralo
  • PHP5 - alcuni host hanno avuto problemi con questo, anche se non li ho visti da un po'; prova a inserire AddType x-mapp-php5 .php nel tuo .htaccess
  • permessi dei file - assicurati che siano corretti, se non sei sicuro, reimpostali con quelli corretti; articolo del codex: modifica dei permessi dei file
  • permessi delle cartelle --
    • WP - controlla e se necessario correggili; articolo del codex: modifica dei permessi dei file
    • server - a volte ci sono ad esempio problemi con i permessi della cartella temporanea per gli upload
  • ricaricare i file core di WP - anche se non dovrebbe essere necessario se i due passaggi precedenti sono stati eseguiti correttamente, ma a volte ci sono altre corruzioni, quindi potrebbe essere un ulteriore passo da compiere
  • configurazione di apache - assicurati che apache sia configurato correttamente sul tuo server, in base alle tue esigenze e ai requisiti effettivi; ad esempio, un colpevole comune sembra essere mod_security
  • controlla il codice personalizzato di WP - ciò che hai scritto o installato tramite plugin; conosci la procedura, testa disattivando e/o passando al tema predefinito e così via

Tutti gli elementi della lista sono piuttosto noti e documentati, quindi, se necessario, troverai maggiori informazioni là fuori.

Ultimo ma non meno importante, buona fortuna!

21 lug 2015 12:14:27
Commenti

Ho risolto disabilitando il mod_reqtimeout di Apache.

Bernhard Bernhard
16 ago 2018 09:13:54
0

Nel file wp-config.php (nella cartella principale di WordPress) devi abilitare il debug.

Devi impostare wp_debug su true.

Modifica define('WP_DEBUG', false); in define('WP_DEBUG', true);

Salva il file e aggiorna il browser (ti consiglio di usare ctrl+f5).

Vedrai tutti gli errori.

22 lug 2015 18:19:05
0

Nel mio caso (WP v5.0), era un problema di versione PHP (PHP v5.4). Passando a PHP v7.2 ho risolto questo problema.

13 dic 2018 00:07:35
0

Consiglio di controllare il log degli errori del webserver prima di procedere alla cieca.

Nel mio caso ho trovato il seguente messaggio di errore

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/"

Il che semplicemente significa che il valore client_max_body_size di nginx era troppo basso. WordPress controlla solo upload_max_filesize nella configurazione PHP, quindi WordPress permette di caricare file più grandi di client_max_body_size se quel valore è inferiore a upload_max_filesize.

16 gen 2020 16:41:05
0

Ho risolto questo problema aumentando post_max_size da 8MB a 16MB

16 giu 2022 05:21:54