web-dev-qa-db-ja.com

何が原因か POST JSON>と<HTML?を返すには、wp-admin/async-upload.phpにアクセスします。

メディアタブでは、有効な画像ファイルをアップロードすると「HTTPエラー」が表示されます。

[メディア]タブを再読み込みすると、画像がアップロードおよびサイズ変更されたことがわかります。

ブラウザのデバッグツールは、アップロード時にブラウザがPOSTをwp-admin/async-upload.phpに作成していることを示しています。サーバーは500エラーで応答します。ただし、応答の本文は疑わしいです。最初の部分はJSON構造です。 JSON構造の直後には、タイトルが「Wordpress Error」で、本体が空のHTMLドキュメントが続きます。

Webサーバー(Apache)のエラーログ、WPデバッグモード、およびPHPエラー/警告の詳細度に関する詳細な説明は役に立ちません。すべてのプラグインを無効にしてもエラーには影響しません。 GdとImageMagickを切り替えようとしても成功しませんでした。

関連するソフトウェアバージョン:

  • Wordpressの4.2.2。
  • PHP 5.5.12-2ubuntu4.4。
  • Ubuntuユートピック

Async-upload.phpがJSONとHTMLエラー文書の両方を返す原因となる可能性があるものや、これをさらにデバッグする方法についてのアイデアはありますか?

4
astletron

同じ問題があり、デバッグ出力に情報が見つかりませんでした。

DOING_AJAXが定義されていないことが判明しました(理由はわかりません)。

async-upload.phpの先頭をからに変更

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

define( 'DOING_AJAX', true );

私のために働いた。たぶん私はもっと深く見て、本当の根本的な原因を見つけるでしょう。

1
joernschellhaas

これはWordPressが原因の問題ではない可能性がありますが、サーバーの設定や設定によるものです。 500個のエラーはかなり一般的なものであり、さまざまな原因が考えられるため、それを解決する1つの指示を与えることは困難です。ちなみに、JSONとHTMLの返却は、これが発生したときには一般的なように見えますが、どこで混乱しているのかわからない場合は、 here のようになります。私はこれが何らかのメモリの問題が原因で起こると確信しています。

それはおそらくメモリに関係していますが、100%確実であるために利用可能な十分な情報がないので、私は確かに知ることができません。だからここにあなたが処理するための少し、必ずしも包括的ではない、チェックリストがあります:

  • メモリ制限 - あなたのPHPメモリが足りなくなっているかもしれません。 define( 'WP_MEMORY_LIMIT', '128MB' );wp-config.phpに入れる
  • .htaccess - 破損/問題。確認してください。おそらくそれをバックアップして再生成する
  • PHP5 - いくつかのホストではそれに問題がありましたが、まだ見たことはありません。 AddType x-mapp-php5 .php.htaccessに入れてみてください
  • ファイルのパーミッション - 確信がない場合は、それらが正しいことを確認してから、正しいもので再設定してください。コーデックス記事: ファイルのパーミッションの変更
  • フォルダのアクセス許可 -
  • WPコアファイルの再アップロード - ただし、最後の2つのステップが正しく行われていれば必要ありませんが、場合によっては他の破損があるため、追加のステップが必要です。取る
  • Apacheのセットアップ - あなたのApacheがあなたのサーバー上で正しくセットアップされていることを確認してください。例えば1つの一般的な原因はmod_securityのようです
  • チェックWPカスタムコード - だからあなたが書いたものやプラグインでインストールしたもの。あなたはルーチンを知っています、無効にすることでテストしたりデフォルトのテーマに切り替えるなど

すべてのリスト項目は非常によく知られていて文書化されているので、必要に応じて、そこからもっと多くの情報を見つけるでしょう。

大事なことを言い忘れましたが、大成功です。

1
Nicolai

wp-config.php ファイル(wordpressのルートフォルダ)でデバッグを有効にする必要があります。

wp_debug true に設定する必要があります。

変更 定義( 'WP_DEBUG'、false); to define( 'WP_DEBUG'、true);

ファイルを保存してブラウザを更新します(Ctrl + F5を使用することをお勧めします)。

あなたはすべてのエラーを見るでしょう。

0
Rares P.

私の場合(WP v5.0)、それはPHPバージョンの問題でした(PHP v5.4)。 PHP v7.2に切り替えると、この問題は解決しました。

0