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枚ずつ送る。複数同時だと合計で上限を超えます
- 形式を変える。PNGよりJPEGのほうが写真では小さくなります
- それでも駄目なら運営者に知らせる。上限が厳しすぎる可能性があります
運営側・開発側|上限は3か所にある
413の設定は1か所ではありません。いちばん小さい値で決まります。1つ上げても他が低いままなら直りません。
| 場所 | 設定項目 | よくある初期値 |
|---|---|---|
| nginx | client_max_body_size |
1MB |
| Apache | LimitRequestBody |
無制限(設定次第) |
| PHP | upload_max_filesize |
2MB |
| PHP | post_max_size |
8MB |
| Cloudflare(無料) | — | 100MB(変更不可) |
| アプリ側 | フレームワークの設定 | 実装次第 |
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枚ずつ送る
- JPEGに変換する
- Wi-Fiに接続する。413とは別ですが、大きなファイルは回線でも失敗しやすくなります
サイトを運営している側
- 管理画面の「最大アップロードサイズ」を確認する
- レンタルサーバーのPHP設定を見る。
upload_max_filesizeとpost_max_size - 利用者に上限を伝える。画面に「10MBまで」と書くだけで問い合わせが減ります
- エラーメッセージを分かりやすくする。「413」とだけ出しても伝わりません
開発している側
- 3か所すべての上限を確認する。最小値が効きます
- アップロード先だけ緩める。全体を緩めない
- クライアント側で縮小する。送信前にCanvasで縮小すれば根本的に解決します
- 大きなファイルは直接ストレージへ。署名付き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 | 中継役が待ちくたびれた |
関連記事
送りすぎの場合は429エラー、リクエストの形が壊れている場合は400エラーをご覧ください。
HTTPステータス全体はHTTPステータスコード一覧、HTTPとHTTPSの違いはHTTPとHTTPSの違いにまとめています。
テックジムは月額22,000円の通い放題でプログラミング教室を運営しています。東京本校(永田町)では毎週土曜にゼロから始めるPython入門講座、そしてゼロから始めるClaude Code講座を無料で開いています。どちらも説明会ではなく実際に手を動かす講座です。
まとめ
413エラーは送ったデータが大きすぎるという意味です。スマホの写真は2〜5MBあり、サーバーの初期上限(1MB前後)を簡単に超えます。
見ている側は縮小してから送る。運営側はnginx・PHP・CDNの3か所を確認してください。最小値が効くので、1か所だけ上げても直りません。






