POSTで128MB以上のファイルのアップロードで、途中で処理が止まってしまう。
nginxのclient_max_body_sizeがPleskの初期値128Mになっているので、128MB以上のファイルがアップロードできなかった模様なのでメモ書き。
PHPを用いたPOSTアップロードが失敗(途中で止まってしまう)場合にチェックすべき箇所。
(1)php.iniの確認
upload_max_filesize アップロードされるファイルの最大サイズ
memory_limit スクリプトが確保できる最大メモリ
post_max_size POSTデータに許可される最大サイズ
上記3つの項目が下記のような関係になるように設定する
memory_limit >= post_max_size >= upload_max_filesize
(2)HTMLの確認
HTMLの送信form側で制限をかけていないかチェック
<input name="MAX_FILE_SIZE" type="hidden" value="1000000" />
(3)nginxを使っている場合はチェック
/etc/nginx/nginx.conf
に
client_max_body_size 512m
を記載すればいい。
Plesk使っている場合は各ドメインの「Apache および nginx の設定>nginx 追加ディレクティブ」に client_max_body_size 512m のように書けばいいのだがバグによって以下のエラーが表示される場合がある。
Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/domain.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed
このようなエラーがでる場合の対処法