AWS EC2+nginx+php アップロードサイズの上限を増やす
AWSのEC2インスタンスにファイルアップロード系アプリをデプロイした時の話。
ローカルでは問題なくアップロードできていたのにサーバ上ではエラーが出ていた。すぐにphp.iniの設定だと思ったが、それだけじゃダメだったのでメモ。
php.iniの設定変更
まずは、php.iniのupload_max_filesize
を変更。
php.iniのデフォルトの場所
/etc/php.ini
- upload_max_filesize = 2M
デフォルトは2Mなので、必要なサイズに変更する。ついでに以下の箇所も必要に応じて変更する。
- post_max_size = 8M
- memory_limit = 128M
- max_execution_time = 30
- max_file_uploads = 20
ちなみに上記の数値はデフォルト値。
post_max_size | POSTできる最大サイズ。upload_max_filesizeより少し大きめに設定。 |
memory_limit | アップロードとは直接関係ないが、増やしておくのが良さそう。 |
max_execution_time | タイムアウト時間(秒)。ファイルが大きい場合は少し多めに設定したい。 |
max_file_uploads | 同時アップロードファイル数の上限。 |
nginx.confの編集
レンタルサーバーなどでは、php.iniの設定を変更するだけで結構大きいサイズのファイルもアップロードできるようになるが、今回はこちらの設定も変更する必要があった。
nginx.confのデフォルトの場所
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf
client_max_body_sizeをオーバーライド
デフォルト値はなんと1M。オーバーライドするにはserver{}内に以下の1行を追記する。
server { #前後省略 client_max_body_size 10M; #前後省略 }
ちなみに0にすると無制限になる。
サーバーの再起動
php.iniやnginx.confを編集後はサーバーの再起動が必要。
#nginx再起動 sudo systemctl restart nginx #php-fpm再起動 sudo systemctl restart php-fpm.service
-
前の記事
WIXで取得したドメインを他社サーバ(さくらインターネット)に向ける 2021.08.02
-
次の記事
【AWS】CloudWatchでメモリとディスクの使用率をチェックする(メモ) 2021.09.13
コメントを書く