📤

Nginx+PHPの環境でサイズの大きいファイルをアップロードする ~ローカル環境編~

に公開

経緯

サイズの大きいファイルをPHPのアプリケーションにアップロードしようとしたところ弾かれたので、設定を色々修正して解決しました。
その時の備忘録になります。

動作環境・前提

Dockerで、NginxとPHPのコンテナを立てています。

バージョン
PHP 8.3.6
Nginx 1.29.0

対象者

  • サイズの大きいファイルをアップロードしようとして失敗する方
  • 調べて設定の変更を試したけど、上手くいかない方(少なくとも、僕と同じ動作環境であればこの記事の通りの設定でいけると思います)

本題

結論、php.iniとnginxのnginx.confの内容を修正してコンテナをビルドし直したら解決しました。

以下がAPIが正常に実行された時の設定内容になります。

php.ini
upload_max_filesize = 125M
post_max_size = 150M
memory_limit = 512M
nginx.conf
client_max_body_size 512M;

各サイズは、アップロードしたいファイルのサイズに合わせて変えてください。

また、post_max_sizememory_limitclient_max_body_sizeは、upload_max_filesizeよりちょっと多めにしておいたほうが良いです。

最後に

この記事ではローカルのDocker環境を前提にした内容でしたが、実はこの後、GoogleCloudのCloudRun環境にデプロイして試したところ、再び413エラーに悩まされることになってしまいました。
こちらも解決済みなので、別の記事に分けてそちらもまとめてみようと思います。

カラビナテクノロジー デベロッパーブログ

Discussion