5

最近、サーバーの 1 つに PHP ダウンロード ポータルをインストールしました。すべて正常に動作していますが、ユーザーは大きなファイル (~ 20 MB) をアップロードできません。

次の設定を非常に大きな値または無制限に設定しました。

memory_limit
upload_max_filesize
post_max_size
memory_limit

ここに完全php.ini: http://pastebin.com/NrqJvMVM

ただし、サーバーを再起動しても失敗します。

設定がありませんか?Apache 構成の値を更新する必要はありますか? 会社のファイアウォールが何らかの形でそれを妨害する可能性はありますか?

編集: phpinfo() を確認しましたが、マスター構成にはまだ古い値が表示されています。ただし、構成ファイル C:\Windows\php.ini には新しい値があります。間違った構成ファイルを使用していますか?

4

8 に答える 8

14

スクリプトでパラメーターをテストすることもできます。おそらくこれが役立ちます:

  1. max_execution_time = ini_set("max_execution_time", "-1");
  2. post_max_size = ini_set("post_max_size", "200M");
  3. memory_limit = ini_set("memory_limit", "200M");
  4. upload_max_filesize = ini_set("upload_max_filesize", "200M");

.htaccess:

php_value upload_max_filesize 200M

php_value メモリ制限 256M

php_value max_execution_time 18000

このトピックに関する素晴らしい記事を次に示しますhttps://www.dokuwiki.org/faq:uploadsize

サーバーに Suhosin がインストールされていますか、それとも fcgi を使用していますか ;-)?

于 2012-08-02T13:36:06.083 に答える
6

インストールのすべての構成設定は、php.ini ファイルに含まれています。これらの設定は、apache .htaccess ファイルのディレクティブまたはスクリプト自体のディレクティブによってオーバーライドされる場合があります。

変更する必要がある次の設定 -

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • メモリ制限
  • max_execution_time
  • post_max_size

構成設定の詳細は以下のとおりです。

  • upload_max_filesize と post_max_size

    ファイルは通常、「multipart/form-data」として知られる形式で Web サーバーに POST されます。post_max_size は、スクリプトがこの方法で受け入れることができるデータ量の上限を設定します。この値は、upload_max_filesize に設定した値よりも大きくするのが理想的です。

    upload_max_filesize は、アップロードするすべてのファイルのサイズの合計であることに注意してください。post_max_size は、upload_max_filesize に、フ​​ォーム内の他のすべてのフィールドの長さと、エンコーダーが含める可能性のある MIME ヘッダーの長さの合計を加えたものです。これらのフィールドは通常小さいため、アップロードの最大サイズを投稿の最大サイズに近づけることができます。

    PHP のドキュメントによると、HTML フォームに MAX_UPLOAD_LIMIT を設定して、ブラウザの制限を提案できます。

  • メモリ制限

    PHP エンジンが受信 POST を処理している場合、受信データの一部をメモリに保持する必要があります。このディレクティブは、構成時に --enable-memory-limit オプションを使用した場合にのみ効果があります。値を大きくしすぎると非常に危険です。複数のアップロードが同時に処理されると、使用可能なすべてのメモリが使い果たされ、多くのメモリを消費する他の無関係なスクリプトがサーバー全体にも影響を与える可能性があるためです。

  • max_execution_time と max_input_time

    これらの設定は、スクリプトの最大存続時間と、スクリプトが入力の受け入れに費やす時間を定義します。数メガバイトのデータが転送されている場合、max_input_time は適度に高くする必要があります。スクリプトで set_time_limit() 関数を呼び出すことにより、max_input_time の ini ファイルの設定をオーバーライドできます。

追加コメント

  • アパッチの設定

    Apache Web サーバーには、使用中の Web スクリプト言語に関係なく、すべての POST データのサイズを制限する LimitRequestBody 構成ディレクティブがあります。一部の RPM インストールでは、要求本文を 512Kb に制限します。これをより大きな値に変更するか、エントリを完全に削除する必要があります。

  • その他のオプション

    Web サイトで多数の同時ファイル転送を処理することが予想される場合は、perl または Java サーバー側コンポーネントの使用を検討してください。PHP は私たちのお気に入りの Web プログラミング言語でもありますが、ファイルのアップロードに関しては、perl と Java がわずかに先行しています。

以下も参照してください。

  1. PHPを使用して最大100MBの大きなファイルをアップロードする
  2. PHP、Apacheを使用して大きなファイルをアップロードする
  3. PHP: 大きなファイルのアップロードに失敗する
于 2012-08-07T06:39:40.433 に答える
3

たぶん、この記事はあなたを助けることができます。パラメータを .htaccess に追加できます

于 2012-07-06T11:20:57.353 に答える
2

間違った設定ファイルを使用していますか?

さて、phpinfo()はあなたが使用しているものを教えてくれます。出力の上部のすぐ近くを見てくださいConfiguration File (php.ini) PathLoaded Configuration File

于 2012-08-04T03:23:32.980 に答える
2

post_max_size 変数を 2 回書きましたが、最初の値が 0 で、2 番目の値が 9999M の場合、最初の値を削除して試してください。

于 2012-07-06T11:19:14.013 に答える
1

正しいphp.iniファイルが見つかるはずです=)

于 2012-08-02T16:34:13.697 に答える
1

MAX_FILE_SIZE が正しく設定されていない可能性があります...

<form enctype="multipart/form-data" action="index.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="50000" />
<input name="filedata" type="file" />
<input type="submit" value="Send file" />
</form>
于 2012-07-06T11:22:00.267 に答える
1

私は過去にあなたの状況にありましたが、私が見つけた最良の解決策は、サードパーティのライブラリを使用してクライアント側でファイルをチャンクに分割し、サーバー上ですべてを元に戻すことでした. 私はこれを見つけました: http://www.plupload.com/

非常に便利で効果的です。さまざまなテクノロジで動作するため、ほとんどのクライアント マシンで動作します。(flash、silverlight、html5 ファイル api aso...) 乾杯!

于 2012-08-09T07:49:52.343 に答える