web-dev-qa-db-ja.com

Raspberry Pi LAMPスタックの最大アップロードファイルサイズを制限しているのは何ですか?

そのため、Raspberry Pi3でホストされているLAMPWebサーバーがあります。RaspberryPiには、ハードウェアRAIDコントローラーを介して接続されたRAID10があります。私の目標は、RaspberryPiのLAMPスタックセットアップを介してPHPを使用して、Webページから大きなファイルをアップロードできるようにすることです。

0.97Gのファイルは正常にアップロードできますが、1.32Gのファイルはアップロードできないため、アップロードファイルのサイズを約1Gに制限している必要があります。

Php.iniには、現在次のセットがあります。

  • memory_limit:1000M
  • post_max_size:4G
  • upload_max_filesize:4G
  • upload_tmp_dir/mnt/raid10/Files/Temp(これは接続されたRAID上にあるため、Raspberry Piが使用するSDカードにファイルをダンプするだけではありません。これを追加するとdid以前からの最大サイズが小さくなります。 。)

他にどの設定を調整する必要があるのか​​わからず、提案を受け付けています。

2
Eric F

アップロードファイルのサイズ制限の削除

ユーザーが大きなファイルをサーバーにアップロードできるようにするLAMP(Linux、Apache、MySQL、PHP)セットアップを構成するには、次のことを行う必要があります。

php.iniの次の変数を変更します

  1. memory_limit = 1000M-メモリ制限をシステムで使用可能なものに設定します
  2. post_max_size = 4G-この値がupload_max_filesize値以上であることを確認します
  3. upload_max_filesize = 4G-これを最大にしたいものに設定します
  4. upload_tmp_dir:/mnt/raid10/Files/Temp-デフォルトではこれは無効になっており、一時的な場所はOSがインストールされているのと同じディスク上にあります。 Raspberry Piからすべてを実行する私の場合、それはSDカードになります。制限を少なくするために、代わりにこれをネットワークドライブの場所に設定しました。

上記を実行した後、ファイルアップロードサイズの制限は、デバイスで使用可能な物理メモリ、memory_limitに設定されているもの、およびファイルシステムの制限(FATファイル構造の場合は4GB)です。私のRaspberryPi 3の場合、それは1GBでした。

メモリ制限をバイパスして、使用可能なメモリの量よりも大きいファイルをアップロードします

メモリ制限を超える唯一の方法は、アップロードをチャンク化することです。チャンクを有効にすると、アップロード中に次のようになります。

  1. ウェブページでアップロードが開始されました。
  2. ソースファイルからのデータは、Webサーバーのメモリにストリーミングされます。
  3. データはWebサーバーのメモリから一時ファイルの場所にダンプされます。
  4. 一時ファイルが設定されたチャンクサイズに達すると、そのデータは最終的な宛先ロケーションファイルにダンプされ、一時ファイルが削除されます。
  5. ファイルが完了するまで、手順2を繰り返します。

チャンクの使い方

これに似たダウンロードハンドラーを使用している場合( https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php )、多くの組み込みオプションが利用可能です。

私の場合、#fileuploadが宣言されているところで、maxChunkSizeの行を追加しました。

$('#fileupload').fileupload({
    maxChunkSize: 10 * 1024 * 1024, // 10 MB <-----This is the line I added
    add: function (e, data) {
       blah blah blah
    }
    });
}
});

ここに配置される値は、使用されるチャンクサイズになります。選択したサイズは少し実験が必要です。小さいものはアップロード速度をかなり遅くし、大きすぎるとサイトのユーザーはかなり長い間プログレスバーに進行状況が表示されなくなります。私にとって10MBは幸せな媒体でした。

*アップロードのプログレスバーは各チャンクが開始したときにのみ移動するため、Niceの連続プログレスバーよりも途切れがちになりますが、実際には問題ありません。

2
Eric F