Ce ar putea cauza ca un POST către wp-admin/async-upload.php să returneze JSON și HTML?

17 iul. 2015, 12:31:15
Vizualizări: 25.3K
Voturi: 5

În tab-ul media, încărcarea unui fișier imagine valid are ca rezultat afișarea mesajului "HTTP error".

Reîncărcarea tab-ului media arată că imaginea s-a încărcat și redimensionat totuși.

Instrumentele de debug ale browserului arată că la încărcare, browserul face un POST către wp-admin/async-upload.php. Serverul răspunde cu o eroare 500. Conținutul răspunsului este însă suspect. Prima parte este o structură JSON. Structura JSON este urmată imediat de un document HTML cu titlul "WordPress Error" dar cu body gol.

Nu apare nimic în log-ul de erori al webserverului (apache) iar modul de debug WordPress și verbozitatea crescută a erorilor/avertismentelor PHP nu au fost de ajutor. Dezactivarea tuturor plugin-urilor nu a avut niciun efect asupra erorii. Am încercat să comut între GD și ImageMagick, de asemenea fără succes.

Versiuni software relevante:

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

Aveți idei despre ce ar putea cauza ca async-upload.php să returneze atât JSON cât și un document HTML de eroare și/sau cum aș putea face debug în continuare?

4
Comentarii

Ai rezolvat această problemă?

Nicolai Grossherr Nicolai Grossherr
28 iul. 2015 11:00:26

Am încercat toate sugestiile fără succes. Mi se pare incredibil că WP formează complet răspunsul JSON și apoi scrie un document de eroare. Se pare că va trebui să aprofundez depanarea în WP pentru a rezolva această problemă.

astletron astletron
28 iul. 2015 16:29:36

Păcat, eram destul de sigur că parcurgerea listei va rezolva problema.

Nicolai Grossherr Nicolai Grossherr
28 iul. 2015 17:08:02

Dacă orice răspuns v-a fost de ajutor, atunci luați în considerare acceptarea acestuia. Consultați »Ce ar trebui să fac când cineva răspunde la întrebarea mea?« și/sau »De ce este importantă votarea?«, mai multe informații despre modelul [wordpress.se] sunt disponibile la [ajutor].

Nicolai Grossherr Nicolai Grossherr
9 nov. 2015 14:10:09
Toate răspunsurile la întrebare 6
0

Am avut aceeași problemă și nu am găsit nicio informație în ieșirea de depanare.

S-a dovedit că DOING_AJAX nu era definit (nu știu de ce).

Modificarea începutului fișierului async-upload.php de la

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

la

define( 'DOING_AJAX', true );

a funcționat pentru mine. Poate voi aprofunda mai târziu și voi găsi cauza reală a problemei.

3 mai 2018 14:38:59
1

Aceasta nu este exact o problemă cauzată de WordPress, ci mai degrabă de configurațiile și/sau setările serverului. Erorile 500 sunt destul de generice și pot avea diverse origini, așa că este dificil să oferi o singură soluție care să le rezolve. Apropo, returnarea de JSON și HTML pare să fie comună când acest lucru se întâmplă, nu sunt sigur unde și cum se amestecă, poate aici. Sunt destul de sigur că acest lucru se întâmplă din cauza unei probleme de memorie.

Deși probabil are legătură cu memoria, nu pot fi sigur, deoarece nu există suficiente informații disponibile pentru a fi 100% sigur. Așadar, iată o mică listă de verificare, nu neapărat exhaustivă, pe care o poți parcurge:

  • limita de memorie - memoria PHP poate fi la limita de a nu fi suficientă, mărește-o; adaugă define( 'WP_MEMORY_LIMIT', '128MB' ); în wp-config.php
  • .htaccess - corupție/probleme; verifică-l; eventual fă-i o copie de rezervă și regenerează-l
  • PHP5 - unele gazde au avut probleme cu asta, deși nu am mai văzut de ceva vreme; încearcă să adaugi AddType x-mapp-php5 .php în .htaccess
  • permisiuni fișiere - asigură-te că sunt corecte, dacă nu ești sigur, resetează-le cu cele corecte; articol din codex: schimbarea permisiunilor fișierelor
  • permisiuni foldere --
    • WP - verifică și dacă este necesar, corectează-le; articol din codex: schimbarea permisiunilor fișierelor
    • server - uneori există probleme, de exemplu, cu permisiunile folderului temporar de încărcare
  • reîncărcarea fișierelor de bază WP - deși acest lucru nu ar trebui să fie necesar dacă ultimii doi pași sunt făcuți corect, dar uneori există alte corupții, așa că ar putea fi un pas suplimentar de luat
  • configurarea apache - asigură-te că apache este configurat corect pe serverul tău, conform nevoilor și cerințelor actuale; de exemplu, un vinovat comun pare a fi mod_security
  • verifică codul personalizat WP - adică ceea ce ai scris sau ai instalat prin plugin-uri; cunoști procedura, testează prin dezactivare și/sau trecere la tema implicită și așa mai departe

Toate elementele din listă sunt destul de bine cunoscute și documentate, așa că, dacă este necesar, vei găsi mai multe informații pe internet.

În cele din urmă, mult succes!

21 iul. 2015 12:14:27
Comentarii

Am putut rezolva problema prin dezactivarea modulului Apache mod_reqtimeout.

Bernhard Bernhard
16 aug. 2018 09:13:54
0

În fișierul wp-config.php (din directorul rădăcină al WordPress) trebuie să activezi depanarea.

Trebuie să setezi wp_debug la true.

Schimbă define('WP_DEBUG', false); în define('WP_DEBUG', true);

Salvează fișierul și reîmprospătează pagina în browser (recomand să folosești ctrl+f5).

Vei vedea toate erorile.

22 iul. 2015 18:19:05
0

În cazul meu (WP v5.0), problema a fost versiunea PHP (PHP v5.4). Trecerea la PHP v7.2 a rezolvat această problemă.

13 dec. 2018 00:07:35
0

Sugerez să verifici jurnalul de erori al serverului web înainte de a încerca să rezolvi problema la întâmplare.

În cazul meu, am găsit următoarea eroare

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

Ceea ce înseamnă pur și simplu că valoarea client_max_body_size din configurația nginx era prea mică. WordPress verifică doar upload_max_filesize în configurația PHP, așa că WordPress permite încărcarea de fișiere mai mari decât client_max_body_size dacă această valoare este mai mică decât upload_max_filesize.

16 ian. 2020 16:41:05
0

Am rezolvat această problemă prin creșterea post_max_size de la 8MB la 16MB

16 iun. 2022 05:21:54