2012-08-01 8 views
7

現在、ユーザーがファイルをアップロードできるWebサイトで作業しています。大きなファイルがアップロードされないようにするにはどうすればよいですか?その時点では、オプション(PHPのpost_max_sizeupload_max_filesize)は役に立ちませんでした。ファイルは完全にアップロードされています。私は接続があまりにも大きいファイルで閉じられるようにするだけです(事前にContent-Length HTTPヘッダーをチェックして、ファイルがアップロードされている間にチェックしてください)。これにはApacheディレクティブかPHP設定キーがありますか?ファイルのアップロードが大きすぎるとApache接続を閉じる

ありがとうございました!

EDIT:Apache conf(デフォルトはCentOS)です。
EDIT2:PHP conf(CentOSデフォルト)も追加されました。

EDIT3:ファイルが大きすぎると、PHPがパイプを閉じるようです。それにもかかわらず、Apacheはまだ終了までに転送を許可します。

+0

http://stackoverflow.com/questions/4738691/php-bulk-post-500-apache-internal-server-error/4739476#4739476、その回答のパラメータを確認してください – regilero

+0

私たちは時間外関連するもの:我々は接続の速度に依存したくない。とにかく、PHPは問題ではないようですが、それはむしろApacheのものです。 – Iso

+0

リンクと@PhpMyCoderに記載されているように、あなたはApache設定でLimitRequestBodyを持っています。 – regilero

答えて

2

[OK]をクリックします。

だから、あなたが直面している主な問題は、ApacheディレクティブLimitRequestBodyまたはLimitXMLRequestBodyは、アップロードが完了した後に適用されるということです。サイズがチェックされる前に、一時フォルダ内の完全なファイルを待っているようです。

アップロードが大きすぎると検出されたらすぐに接続を切断する必要があります。ある時点では、mod_throttleはそれを行うためのモジュールでした。このチェックをAlternative to mod_throttle servfault questionあなたのニーズに合うかもしれない帯域幅制御モジュールのリストを持つことができます。

mod_bwshareたとえば、クライアントIPごとに帯域を制限することはできますが、それはper-IP制限の要求ではありません。 mod_quosもあり、ダウンロードの制限が多々ありますが、アップロード管理のための多くのものを見つけることはできませんthis answer on throttling uploadsも参照してください。

だから、あなたも(TCPスタック上)OSレベル制限または高度なファイアウォール機能(servfaultに尋ねる)をチェックすることがあります。

隠しフォームの値やjsアップローダの設定などのクライアント側の制限ツールを使用することもできますが、クライアント側で使用されているものと同様に、セキュリティの面ではクライアントサイドの制限を変更することはできません。

2

ApacheのLimitRequestBodyを使用できます。構文は、単純な(とバイト単位)です。

LimitRequestBody 10490000 # 10 MB 

これはhttpd.conf.htaccessの両方で動作し、あなたがhttpd.conf(Ubuntuの上sudo service apache2 restart)を編集している場合だけ再起動して注意して。

あなたは(20メガバイトに5メガバイトに制限アバターのアップロードを、しかし制限の添付)ファイルごとに制限を設定する必要がある場合は、<Files>を使用することができます。

<Files avatarUpload.php> 
    LimitRequestBody 5242880 # 5 MB 
</Files> 

<Files attachmentUpload.php> 
    LimitRequestBody 20971520 # 20 MB 
</Files> 
+2

これも同様にテストしました。悲しいことに、ファイルは完全にアップロードされ、その後Apacheは接続を切断します。 – Iso

+0

本当ですか? Apacheでバグレポートを記録する必要があります。これは、この機能が意図していることとは明らかに矛盾しています(つまり、あなたの方法論に非常に疑わしい)。 – symcbean

+0

Good One .... :) – Baba

関連する問題