413エラー(Content Too Large)の原因と対処法|スマホの写真が送れない理由

先に結論です。413エラーは「送ったデータが大きすぎる」という意味です。画像や動画のアップロードで出るのが大半です。スマホで撮った写真はそのままだと数MBあるため、縮小してから送れば通ります。

413エラーとは

正式名称は 413 Content Too Largeです。以前は Payload Too Large、さらに前は Request Entity Too Large と呼ばれていました。3つとも同じものです。

サーバーには「1回に受け取れるデータの上限」が設定されています。これを超えると、中身を見る前に413で断られます。

スマホの写真で413が出る理由

スマホの写真は想像より大きいです。

撮影したもの おおよそのサイズ
スマホの標準的な写真(1枚) 2〜5MB
高画質モード・ポートレート 5〜12MB
スクリーンショット 0.5〜2MB
短い動画(10秒) 20〜50MB
機種と設定により変動します

一方、サーバー側の上限は初期値で1MB〜2MBのことが珍しくありません。写真1枚で超えます。

見ている側の対処

  1. 写真を縮小する。スマホの共有メニューやメールアプリに「サイズを小さくする」選択肢があります
  2. スクリーンショットで代用する。写真より小さくなることが多いです
  3. 1枚ずつ送る。複数同時だと合計で上限を超えます
  4. 形式を変える。PNGよりJPEGのほうが写真では小さくなります
  5. それでも駄目なら運営者に知らせる。上限が厳しすぎる可能性があります

運営側・開発側|上限は3か所にある

413の設定は1か所ではありません。いちばん小さい値で決まります。1つ上げても他が低いままなら直りません。

場所 設定項目 よくある初期値
nginx client_max_body_size 1MB
Apache LimitRequestBody 無制限(設定次第)
PHP upload_max_filesize 2MB
PHP post_max_size 8MB
Cloudflare(無料) — 100MB(変更不可)
アプリ側 フレームワークの設定 実装次第
2026年9月24日時点の一般的な値。nginxの1MBが最初に効くことが多いです

PHPでは post_max_size を upload_max_filesize より大きくしてください。ファイル本体以外にフォームの項目も一緒に送られるため、同じ値にするとファイル単体が上限ぎりぎりのときに失敗します。

nginxの設定例

http {
    client_max_body_size 20m;   # 全体に適用
}

server {
    location /upload {
        client_max_body_size 50m;   # この場所だけ緩める
    }
}

全体を大きくするより、アップロードを受ける場所だけ緩めるほうが安全です。全体を50MBにすると、あらゆるURLが巨大なリクエストを受け付けてしまいます。

WordPressの場合

管理画面の「メディア」に「最大アップロードサイズ」が表示されています。ここを超えると413になります。レンタルサーバーでは管理画面からPHPの設定を変更できることが多いので、まずそちらを確認してください。

上限を大きくする前に考えること

上限を上げるのは、いつでも正解とは限りません。

  • 帯域と保存容量を消費する。10MBの写真が1万枚で100GBです
  • 表示が遅くなる。巨大な画像をそのまま表示すると閲覧者の通信量を奪います
  • 攻撃の入口になる。上限が緩いと、大量のデータを送りつけられます

実務では「送る前に縮小する」のが最善です。ブラウザ上で画像を縮小してから送れば、413は起きず、通信量も減ります。

立場別の確認手順

サイトを見ている側

  1. 写真を縮小してから送る
  2. 1枚ずつ送る
  3. JPEGに変換する
  4. Wi-Fiに接続する。413とは別ですが、大きなファイルは回線でも失敗しやすくなります

サイトを運営している側

  1. 管理画面の「最大アップロードサイズ」を確認する
  2. レンタルサーバーのPHP設定を見る。upload_max_filesize と post_max_size
  3. 利用者に上限を伝える。画面に「10MBまで」と書くだけで問い合わせが減ります
  4. エラーメッセージを分かりやすくする。「413」とだけ出しても伝わりません

開発している側

  1. 3か所すべての上限を確認する。最小値が効きます
  2. アップロード先だけ緩める。全体を緩めない
  3. クライアント側で縮小する。送信前にCanvasで縮小すれば根本的に解決します
  4. 大きなファイルは直接ストレージへ。署名付きURLでS3等に直接上げればサーバーを経由しません

よくある質問

Payload Too Large と表示されますが同じですか?

同じです。413の名称が変わってきただけで、意味は変わりません。

スマホからだけ413になります

スマホの写真が大きいからです。パソコンから送る画像は既に縮小されていることが多く、上限を超えません。

設定を変えたのに直りません

他の場所の上限が効いています。nginx・PHP・CDNの3か所すべてを確認してください。設定変更後はサーバーの再起動(リロード)が必要な点も見落としがちです。

コード 名前 ひとことで言うと
400 Bad Request リクエストの形が壊れている
401 Unauthorized 認証が必要(まだ名乗っていない)
403 Forbidden 名乗ったが権限がない
404 Not Found その住所に何もない
409 Conflict いまの状態と矛盾する
413(このページ) Content Too Large 送ったデータが大きすぎる
422 Unprocessable Content 形は正しいが内容が不正
429 Too Many Requests 送りすぎ
500 Internal Server Error サーバーの中で処理が落ちた
502 Bad Gateway 中継役がおかしな応答を受け取った
503 Service Unavailable いま受け付けられない
504 Gateway Timeout 中継役が待ちくたびれた
一覧はHTTPステータスコード一覧にまとめています

関連記事

送りすぎの場合は429エラー、リクエストの形が壊れている場合は400エラーをご覧ください。

HTTPステータス全体はHTTPステータスコード一覧、HTTPとHTTPSの違いはHTTPとHTTPSの違いにまとめています。

テックジムは月額22,000円の通い放題でプログラミング教室を運営しています。東京本校(永田町)では毎週土曜にゼロから始めるPython入門講座、そしてゼロから始めるClaude Code講座を無料で開いています。どちらも説明会ではなく実際に手を動かす講座です。

まとめ

413エラーは送ったデータが大きすぎるという意味です。スマホの写真は2〜5MBあり、サーバーの初期上限(1MB前後)を簡単に超えます。

見ている側は縮小してから送る。運営側はnginx・PHP・CDNの3か所を確認してください。最小値が効くので、1か所だけ上げても直りません。

対面・無料|東京・永田町で毎週土曜日13時

1回の参加で、プログラミングの構造がわかる

ゼロからはじめるPython入門講座

8年間・累計600回開催/これまで全国で2万人以上が参加

「やはり対面で聞けるのはとても気づきがあり、価値があると思います」

参加者の声

  • 本当に初心者からの講座です。プログラミングに触ったことがなくて大丈夫です
  • 対面だから、その場で聞けます。つまずいた所を持ち帰らずに解決できます
  • 講座は1時間。そのあとも残って学習を続けられ、講師にも質問できます
  • 独学で挫折した方も。糸口が見つかって、講座のあと会員になる方が多くいます

無料で参加する|開催日程を見る

参加費は無料です