概要
[413 Request Entity Too Large]エラーが出たので、備忘録として記録。
構成
構成 | 利用機能 |
---|---|
物理サーバー | AWS |
仮想サーバー | EC2 |
webサーバー | Nginx |
不具合内容
Laravelをデプロイ後に画像がstoreできなくなった。
ローカル環境では、問題なかったのでサーバー設定の問題だと判断しました。
詳しく確認すると、1M以上の画像がアップロードできない模様。
エラー原因
-
Nginxのリクエストボティサイズの設定項目は「client_max_body_size」であり、デフォルト値は「1m(1MB)」で1M以上のアップロードできない。
-
phpのデフォルト設定で2m(2MB)以上のアップロードできない。
解決法
- Nginxとphpの設定を変更
nginx編集
etc/nginx/nginx.confを編集する。
10mbまでの画像を扱えるよう
「client_max_body_size」を「10m」で設定
server {
listen 80;
server_name example.com;
root /var/www/html/example;
index index.php index.html;
+ client_max_body_size 10m;
}
nginxの編集で「413 Request Entity Too Large」のエラーは解消しました。
しかし、まだ2M以上の画像がアップロードできませんでした。
php編集
etc/php.iniの編集
# 一応、バックアップ保存
% sudo cp php.ini php.ini.default
# vimで編集
% sudo vim etc/php.ini
10mbまでの画像を扱えるよう
「upload_max_filesize」を「10M」に変更
postデータ上限もuploadの10mに合わせておく。
「post_max_size」を「10M」に変更
- post_max_size = 8M
+ post_max_size = 10M
- upload_max_filesize = 2M
+ upload_max_filesize = 10M
変更を反映させるため、サービスの再起動
% sudo systemctl restart nginx.service
% sudo systemctl restart php-fpm.service
解決しました!
参考
チェックは3ヵ所! 413 Request Entity Too Largeが表示された時の対処法
[PHP] ファイルアップロードの上限サイズを変更する際にさわるディレクティブまとめ