この問題は、悪名高い2GBの制限に直接関係しているようで、32ビットのPHPの問題であるかどうかはわかりません。HTTPがそのような大きなファイル用に設計されていないことに関連するコメントを見てきました。ただし、これまでに機能することが証明されているものに対する根本的な変更を決定する前に、この方向性を使い果たしたいと思います。タイトルが示すように、2GBを超えるファイルをアップロードする必要があります。これは、これまでで最大の3.8GBです。jQuery-file-uploadを使用して作成されたフォームがありますが、これらの大きなファイルが開始されるまで、ファイル(2GB未満)の送信に問題はありませんでした。3.8GBのものはFile-Uploadからアップロードするのにおそらく5分かかり、プログレスバーは100%まで完了します。ただし、アップロード後に報告されたエラーはタイプ1であり、ファイルサイズの制限に違反していることを示しています。
アップロード中にサーバーのディスク使用量を監視すると、次のサンプルプロパティが表示されます。アップロード前のディスクは30%使用され、アップロードが続行されると、この使用量は31%、32%.... 45%、46%増加します。等 ただし、約2GBの時点で、クライアント/ブラウザのファイルアップロードが続行されている間、ディスク使用量は30%に戻ります。サーバーのディスク使用量の増加が停止すると、クライアントはアップロードの60%にすぎない可能性があります。それでも、クライアントは引き続き100%になりますが、ディスクのステータスが30%になることはないため、サーバーによって受け入れられていません。
私は64ビットUbuntu(最新)をApache / 2.2.22(Ubuntu)とPHPバージョン5.3.10-1ubuntu3.2で実行しています。解決策を何日も探し続けても、変更後も3.8GBのファイルをアップロードできません。非常に多くの設定。以下にそのような変更をリストしますが、この段階では32ビットのPHPの問題である可能性があるため、フォローする価値のあるリンクまたは試す価値のある解決策を誰かが提案できる場合は、それをいただければ幸いです。
Apache2では、次のように設定しました。
- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
- LimitRequestBody to 4939212390
- php_value upload_max_filesize 4831838208
- php_value post_max_size 4939212390
php.iniで、次のように設定しました。
- UPLOAD_MAX_FILESIZE 4831838208
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M
サーバーで次のコマンドを実行すると、PHPに32ビットの問題がないように見えますが、この段階ではわかりません。
php -r "echo PHP_INT_MAX;"
9223372036854775807
私が述べたように、どんなアイデアでも大歓迎です。
アップデート:
この問題は解決したので、基本的なアプローチに戻ることを提案してくれた@BogdanBurimに感謝します。
次の設定で、HTTP経由で3.8GBのファイルをアップロードできました。
Apache2では、次のように設定しました。
- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
- LimitRequestBody to 0
- php_value upload_max_filesize 0
- php_value post_max_size 4939212390
- .htaccess in the php temp directory (in my case its /tmp/) I've set:
- LimitRequestBody to 0
- php_value upload_max_filesize 0
- php_value post_max_size 4939212390
php.iniで、次のように設定しました。
- UPLOAD_MAX_FILESIZE 0
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M
このソリューションの他の唯一の重要な部分は、アップロードフォームからMAX_FILE_SIZE、HTMLを削除する必要があることでした。
<input type="hidden" name="MAX_FILE_SIZE" value="4939212390" />
この設定を行うと、PHPタイプ2エラーが継続的に発生するため、phpは設定されている32ビットを超える整数を処理できませんでした。これを削除すると、UPLOAD_MAX_FILESIZEをどこでも0に変更するまで、PHPタイプ1のエラーが発生しました。これで、動作するようになりました!!!!