エラーの概要
WordPressサイトに大容量のテーマ、プラグイン、またはメディアファイルをアップロードしようとすると、画面が真っ白になったり、特定のサーバーレスポンスが表示されたりすることがあります。
413 Request Entity Too Large
このエラーは、アップロードしようとしているファイルがウェブサーバーで定義されている最大サイズ制限を超えていることを示しています。WordPress自体にも内部的な制限がありますが、この特定のメッセージは、リクエストがWordPressに到達する前にゲートキーパーとして機能しているサーバーソフトウェア(通常はNginx)から送出されることがほとんどです。
根本原因
主な原因は、Nginxの client_max_body_size ディレクティブです。デフォルトでは、Nginxはファイルアップロードを1MBに制限していることが多いです。ZIPファイルや高解像度の画像がそれより大きい場合、サーバーはリソースを保護するために接続を即座に終了し、413ステータスコードを返します。
二次的な原因としては、PHPの設定制限(upload_max_filesize および post_max_size)や、Cloudflareなどのサービスを使用している場合のプロキシ設定が挙げられます。
ステップ1:Nginxの設定を変更する
現代的なWordPressスタック(LEMPなど)の多くはNginxを使用しているため、これが最も効果的な解決策です。Nginxに対して、より大きなリクエストボディを許可するように設定する必要があります。
- SSH経由でサーバーに接続します。
- Nginxの設定ファイルを開きます。セットアップ状況により、メイン設定ファイルまたは特定のサイトブロックの設定ファイルのいずれかになります:
# グローバル設定の場合
sudo nano /etc/nginx/nginx.conf
# または特定のサイトの場合
sudo nano /etc/nginx/sites-available/yourdomain.com
http、server、またはlocationブロックを探します。client_max_body_sizeディレクティブを追加または更新します。ほとんどのWordPressサイトでは、64Mに設定すれば十分です:
server {
listen 80;
server_name yourdomain.com;
# アップロード制限を増やす
client_max_body_size 64M;
location / {
...
}
}
- ファイルを保存し、設定ファイルの構文エラーをチェックします:
sudo nginx -t
- テストに成功したら、Nginxをリロードして変更を適用します:
sudo systemctl reload nginx
ステップ2:PHPの設定を更新する
Nginxを修正した後でも、PHPの内部制限がファイルサイズより低い場合、PHPがアップロードをブロックし続ける可能性があります。これらの値を同期させる必要があります。
php.iniファイルの場所を確認します。パスはバージョン(例:PHP 8.1)によって異なります:
sudo nano /etc/php/8.1/fpm/php.ini
- 以下の行を検索して修正します:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
注:post_max_size は upload_max_filesize と同等か、それより大きい値にする必要があります。
- PHP-FPMサービスを再起動します:
sudo systemctl restart php8.1-fpm
ステップ3:プロキシの制限(Cloudflare)を確認する
If you use Cloudflareを使用している場合、Freeプランではクライアントのアップロード制限が 100MB に固定されていることに注意してください。100MBを超えるファイルをアップロードしようとしている場合、リクエストがサーバーに到達する前にCloudflareが413エラーを発生させるため、Nginxの設定を変更しても解決しません。
この場合、2つの選択肢があります:
- SFTP/FTP経由でファイルを直接アップロードする。
- アップロードを行う間、一時的にCloudflareをバイパスする(DNS設定で「グレーの雲」にする)。
動作確認
修正が機能していることを確認するには:
- WordPressのダッシュボードにログインします。
- メディア > 新規追加 に移動します。
- 「最大アップロードサイズ: 64 MB」というテキストを確認します。この数値が以前の値から増えていれば、PHPの変更が反映されています。
- 以前失敗したファイルのアップロードを再度試します。413エラーが出ずに処理されるはずです。
トラブルシューティングのヒント
- 権限の確認: 413エラーは消えたが「一時フォルダが見つかりません」または「ディスクへの書き込みに失敗しました」というエラーが出る場合は、
wp-content/uploadsの権限(通常は755)を確認してください。 - マルチサイト: WordPressマルチサイトネットワークを使用している場合、サイトネットワーク管理 > 設定 にある「アップロードファイルの最大サイズ」という設定がサーバー設定を上書きすることがあります。
- テーマレベルの制限: 一部の不適切にコーディングされたテーマは、
functions.phpでini_setの値を設定しようとします。サーバーレベルの変更が機能しない場合は、テーマがより低い制限を強制していないか確認してください。

