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

 

をconfに記載すればいい。

 

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

 

このようなエラーがでる場合の対処法

support.plesk.com