WordPressで画像アップロード時に「JSONレスポンスが不正」と出た原因と、Nginx設定で解決した話

WordPressで記事を書いていて、画像をアップロードしようとした瞬間に
「JSONレスポンスが不正です」
と表示された経験はありませんか。

特に自宅サーバーやVPS、Nginx構成でWordPressを運用している場合、このエラーはかなり厄介です。私自身も「画像サイズは大きくないのに、なぜ?」と数時間ハマりました。

この記事では、実際に私が遭遇したトラブルと、その原因を切り分けて解決した過程を、同じ状況で困っている人向けに詳しく解説します。


突然の『JSONレスポンスが不正』エラー|発生した状況と初期の推測

ある日、WordPressのメディア追加で画像をアップロードすると、即座にエラーが表示されるようになりました。

  • 画像サイズは 1MB程度
  • JPEG形式
  • 以前は問題なくアップロードできていた

この時点で「容量オーバーではなさそうだな」と感じました。

PHPの設定を疑った理由

最初に疑ったのは、PHP側の設定です。

  • upload_max_filesize
  • post_max_size
  • max_input_time

あたりを確認し、数値を引き上げました。
設定後にApache(正確にはPHP-FPM)を再起動しましたが、状況は変わらず

Apache再起動でも改善しない違和感

再起動してもエラーが一瞬で返ってくる。


Apacheログを確認しても原因が見つからない|行き詰まりの時間

次にやったのはログ確認です。

  • /var/log/httpd/access_log
  • /var/log/httpd/error_log

しかし、画像アップロード時にそれらしいログが一切出ない

アップロード直後に即エラーが出る不自然さ

通常、PHPエラーやサイズ超過なら、何かしらログが残ります。
それが無いということは、ApacheやPHPまでリクエストが届いていない可能性が高い。

WordPress側のデバッグも空振り

念のため WP_DEBUG を有効化しましたが、管理画面上の挙動に変化はありませんでした。

ここで完全に行き詰まります。


Chromeデベロッパーツールで原因を特定|「413 Request Entity Too Large」

転機になったのは、Chromeのデベロッパーツールでした。

F12で通信ログを確認してみる

画像アップロード時に

  • F12キー
  • Networkタブ

を開いた状態で再度アップロード。

すると、レスポンスに
「413 Request Entity Too Large」
というステータスコードが表示されていました。

413エラーが意味するもの

413エラーは簡単に言うと、

サーバー側で「このリクエストはサイズが大きすぎる」と判断されている

という状態です。

Nginx側の制限が原因だと判明

ここでようやく気づきました。

  • ApacheやPHPではなく
  • Nginxがフロントでリクエストを弾いている

そのため、Apacheログには何も残らなかったわけです。


Nginx設定で解決|client_max_body_size を追加

原因が分かれば、対処はシンプルでした。

nginx.confではなくconf.d配下を修正する理由

私の環境では、nginx.conf 直書きではなく
/etc/nginx/conf.d/xxx.conf
のような 個別の仮想ホスト設定を使っていました。

この場合、serverブロック内に設定を書くのが正解です。

実際に追加した設定例





server {
    ...
    client_max_body_size 20M;
    ...
}

画像が1MB程度だったので、10Mくらいでも十分です。

設定反映後の流れ

  • Nginxを再起動
  • WordPressで再度画像アップロード
  • エラーなしで正常にアップロード成功

あっさり解決しました。


同じエラーで困っている人へ|再発防止のポイント

今回の経験から、特に重要だと感じたポイントをまとめます。

Nginxの制限値を適切に設定する

自宅サーバなどでWordPressをNginxで運用している場合、
client_max_body_size はほぼ必須設定です。

各レイヤーの役割を理解する

  • ブラウザ
  • Nginx
  • Apache / PHP
  • WordPress

どこで止まっているかを意識するだけで、トラブル解決速度は大きく変わります。

Chromeデベロッパーツールは最強の味方

ログが無いときほど、ブラウザ側の通信ログを見る。
これは今後も強くおすすめしたい方法です。


関連アイテム・サービスの紹介

今回のようなトラブルは、自前サーバーだからこそ起きやすい側面もあります。

さくらサーバ(レンタルサーバー)

さくらサーバは
WordPressをクリックのみでインストールでき、高速化キャッシュ機能もGUI画面から設定できます。基本的にコマンドライン不要です。

そもそも高速化機能がサーバについており、Nginxのリバースプロキシ等をわざわざ設定する必要性が薄く、今回のような設定ミスを避けやすいです。


私自身も当初は自前サーバで勉強していたものの、引っ越し等でルータの設定を変えないといけなかったりで辟易し、今はレンタルサーバで運用しています。

さくらのレンタルサーバ(PR)

高速・安定・無料SSL付!月額500円からWordPressが使えるさくらのレンタルサーバ

「サーバー設定で消耗したくない」という人には、こうした環境を選ぶのも一つの手です。

『いちばんやさしいWordPressの教本』

WordPressの基本構造や仕組みを理解しておくと、
「これはWordPressの問題か?サーバーか?」という切り分けが楽になります。

Nginxの設定などが必要であれば別途学ぶ必要がありますが

初心者のうちに一冊通して読んでおくと、結果的に遠回りしません。

【詳細・最新価格をAmazonで見る】
いちばんやさしいWordPressの教本 第7版 6.x対応 人気講師が教える本格Webサイトの作り方 (いちばんやさしい教本シリーズ) 単行本(ソフトカバー) – 2025/10/1 石川栄和 (著), 大串 肇 (著), 星野邦敏 (著)


まとめ|WordPressの画像アップロードエラーは“原因の切り分け”が重要

「JSONレスポンスが不正」という表示は、原因そのものを教えてくれません
だからこそ、

  1. PHP設定
  2. Apache
  3. Nginx
  4. ブラウザ側の通信

を順番に切り分けて考えることが重要です。

特に、Chromeデベロッパーツールで413エラーを確認できたことが、今回の解決の決め手でした。

同じエラーで困っている方が、この記事を読んで一歩でも早く解決できれば幸いです。

コメント