PHP ファイルのアップロード制限には多くの要素が含まれます。要約すると、次のとおりです。
1. use using using using out’s off off down off ’s ‐ ‐ ‐ ‐‐ ‐ ‐ _ //最大 POST データ制限
4. Upload_max_filesize //最大アップロード ファイル サイズ制限
もちろん、メモリ設定も現在利用可能なメモリ設定によって制限されるため、理論的にはアップロード ファイル サイズを絶対に制限するわけではありません。メモリの量とプログラムの実行時間はシステムの現在のビジー状態によって制限され、POST データのサイズも冗長な POST ヘッダーや多重割り込みアップロードの数などによって制限されます。これらの要因はアップロードの結果に影響します。いつかのファイル。
したがって、論理的な順序では、memory_limit > post_max_size > Upload_max_filesize に加えて、max_execution_time 許可時間が十分に長いという前提があります。
アップロード制限が 100M バイトであると仮定すると、参考設定は次のとおりです:
; Maximum execution time of each script, in secondsmax_execution_time = 30; Maximum amount of time each script may spend parsing request datamax_input_time = 60; Maximum input variable nesting level;max_input_nesting_level = 64; Maximum amount of memory a script may consume (128MB)memory_limit = 128M;Maximum size of POST data that PHP will accept.post_max_size = 105M; Maximum allowed size for uploaded files.upload_max_filesize = 100M
一般的に、ファイルをアップロードするときは、まず PHP.INI のデフォルト設定を確認する必要があります。デフォルトのmemory_limitは128Mです。スクリプトの実行によって消費できるメモリの量です。アップロード制限が 100M の場合、このような大量のメモリで十分です (または一般的に、たとえば複数のファイルを同時にアップロードする場合は十分ではない可能性があります)。
set_time_limit を調整しますmax_execution_time はデフォルトで 30 秒に設定されています。現在のネットワーク状況から判断すると、100M のファイルを 30 秒でアップロードすることはほぼ不可能です。10M の帯域幅は 1 秒あたり 1 メガバイトを必要とします。 1分半。そのため、この設定を調整しても実際の実行時間の見積もりが難しく、調整が長すぎるとAPACHEにとって優しくありません。
そのため、max_execution_time を調整するのではなく、PHP プログラムで
set_time_limit(0);
を使用して一時的な調整を行うことをお勧めします。 0 を設定すると、時間制限がないことを意味します。もちろん、プログラムの実行の観点からは、0 を設定するとタイムアウトの問題は解決しますが、それは良い解決策ではありません。プログラムがブレークポイントの再開をサポートしている場合は、600 秒または 3600 秒を設定する方が良いと思われます。タイムアウトが発生すると自動的に中断されます。転送を再開するだけです。
post_max_size = 2M (デフォルトは 2M) を見つけて、次のように希望のサイズに変更します。 post_max_size = 100M
upload_max_filesize は、アップロードされたファイルの最大値を示します。
upload_max_filesize を探します。デフォルトは 8M で、upload_max_filesize = 100M に変更します。post_max_size は、upload_max_filesize よりも大きく設定することをお勧めします。
最後に、セットアップが完了したら、Apache を再起動する必要があります。
詳細はPHPマニュアルの[php.iniコア設定オプションの説明]をご確認ください。
post_max_size POST データに許可される最大サイズを設定します。
memory_limit スクリプトが適用できるメモリの最大バイト数を設定します。
PHP ファイルのアップロードに関連するパラメータ PHP のデフォルトのアップロード制限は最大 2M ですが、この設定を超えるファイルをアップロードする場合は、PHP や Apache などのいくつかのパラメータを調整する必要があります。以下にいくつかのパラメータを簡単に紹介します。 PHP ファイルのアップロードに関連するパラメータ:
file_uploads
HTTP スイッチによるファイルのアップロードを許可するかどうか。デフォルトは、PHP によってアップロードされたファイルが配置される一時ディレクトリを記述するために使用されます。ファイルをアップロードする場合、サーバーが一時ファイルを閉じていないこと、およびフォルダーへの書き込み権限があることを確認する必要があります。指定されていない場合、PHP はシステムのデフォルト値を使用します
upload_max_filesize
許容されるアップロード ファイルの最大サイズ、デフォルトは 2M です
post_max_size
POST メソッドの量を使用して、フォーム送信で PHP が受信できる最大データを制御します。 PHP ファイルのアップロード機能を使用する場合は、この値を Upload_max_filesize よりも大きくする必要があります
max_input_time
POST、GET、および PUT メソッドを通じてデータを受信する時間を秒単位で制限します。アプリケーションが低速リンクで実行されている場合は、データの受信に必要な時間の増加に対応するためにこの値を増やす必要があります
memory_limit
スクリプトの実行によってシステムで使用可能な大量のメモリが使用されるのを避けるために、PHP では次のことが可能ですメモリ使用量の制限を定義します。単一のスクリプト プログラムが使用できる最大メモリ容量を指定するには、memory_limit 変数を使用します。変数memory_limit の値は、post_max_size の値より適切に大きくする必要があります
max_execution_time
max_execution_time は、PHP がスクリプトの実行を待機する時間を設定します。スクリプトを強制終了する時間は秒単位で計算されます。この変数は、スクリプトが無限ループに入った場合に役立ちます。ただし、完了までに時間がかかる正当なアクティビティ (大きなファイルのアップロードなど) がある場合、この機能により操作が失敗する可能性もあります。このような場合、重要なプロセスの実行中に PHP がスクリプトを閉じないように、この変数の値を増やすことを検討する必要があります
file_uploads = on を見つけて、HTTP スイッチ経由でファイルのアップロードを許可します。 。デフォルトは ON で、これはオンであることを意味します。
upload_tmp_dir; 指定しない場合は、システムのデフォルトの一時フォルダーが使用されます
upload_max_filesize = 8m;つまり、アップロードできるファイルの最大サイズです。デフォルトは 2M
post_max_size = 8m で、フォーム内のすべての値を含む、PHP へのフォーム POST を通じて受信できる最大値を指します。デフォルトは 8M です
通常、上記の 4 つのパラメータを設定した後、ネットワークが正常であれば、8M 以下のファイルをアップロードしても問題ありません。
ただし、8Mを超える大きなファイルをアップロードしたい場合は、上記の4つの項目を設定するだけで間違いなく機能します。
次のパラメータをさらに設定します
max_execution_time = 600 ; 各 PHP ページの実行にかかる最大時間値 (秒)、デフォルトは 30 秒です
max_input_time = 600 ; 各 PHP ページがデータを受信するのに必要な最大時間、デフォルトは 60 秒です
memory_limit = 8m; 各 PHP ページで消費される最大メモリ、デフォルトは 8M です。上記のパラメータを変更すると、ネットワークで許可される通常の状況で大きなファイルをアップロードできます。
file_uploads = on
upload_tmp_dir = /tmp
upload_max_filesize = 32m
post_max_size = 32m