web-dev-qa-db-ja.com

PHP post_max_sizeはupload_max_filesizeをオーバーライドします

私のサイトのホストで、私は(phpinfo経由で)それを見てきました

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

これにより、最大16MBのファイルとしてアップロードできるはずだと考えるようになりました。ただし、postメソッドを使用してこれを行うと(通常)、post_max_sizeが処理を引き継ぎ、送信が多すぎることを宣言します。

16MBのファイルを送信できる方法は何ですか? GET-PUT-その他?

誰かが私のためにこれを明確にできることを願っています。

サイモン

42
Simon

upload_max_filesizeは、任意の単一ファイルの制限です。 post_max_sizeは、リクエストの本文全体の制限であり、複数のファイルを含めることができます。

post_max_size = 20Mupload_max_filesize = 6Mを指定すると、それぞれ6Mのファイルを最大3つアップロードできます。代わりにpost_max_size = 6Mupload_max_filesize = 20Mの場合、post_max_sizeを押す前に1つの6Mファイルしかアップロードできません。 upload_max_size> post_max_sizeを使用しても役に立ちません。

post_max_sizeを超えることを認識する方法は明らかではありません。 $_POSTおよび$_FILESは空ですが、$_SERVER['CONTENT_LENGTH']は> 0になります。クライアントが投稿変数または投稿ファイルをアップロードしなかった場合、$_SERVER['CONTENT_LENGTH']は0になります。

80
Matthew

POSTファイルのアップロードが行われます(通常、他のメソッドもあります)。ファイルアップロードフィールドを含むフォームのメソッド属性を調べます;)

関連する設定の最低制限は、より高い設定に優先します。

ファイルアップロードの処理:一般的なPitfals を参照してください。これにより、詳細と値の計算方法が説明されます。

19
hakre

ファイルのアップロードを送信する通常の方法はPOSTであるため、post_max_sizeも16 Mb以上にする必要があります。

ちなみに、memory_limitも役割を果たします。 16Mbより大きくする必要がありますが、デフォルト値は128Mbなので、この問題は発生しません。 php.ini設定の例:

post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 128M

アクセスできる場合はphp.iniのこれらの値を変更します。そうでない場合は、.htaccessファイルで変更を試みることができます。

php_value upload_max_filesize 16M
php_value post_max_size 16M 

これは、AllowOverride設定で許可されている場合にのみ機能します。それ以外の場合は、ホスティング会社に依頼する必要があります。

12
stivlo

サーバー構成設定では、ユーザーは最大16MBのファイルをアップロードできます( pload_max_filesize = 16Mbに設定しているため)。ただし、 post_max_size は最大8MBの投稿データのみを受け入れます。これがエラーをスローする理由です。

official PHP site から引用:

  1. 大きなファイルをアップロードするには、post_max_sizeの値がupload_max_filesizeより大きくなければなりません。

  2. memory_limitはpost_max_sizeより大きくする必要があります

Post_max_sizeの値は、常にupload_max_filesizeの値よりも大きく設定する必要があります。

6

post_max_size:

  • 許可される投稿データの最大サイズを設定します。この設定はファイルのアップロードにも影響します
  • 大きなファイルをアップロードするには、この値はupload_max_filesizeより大きくなければなりません
  • 一般的に、memory_limitはpost_max_sizeより大きくする必要があります。
  • PHPデフォルト:8M

pload_max_filesize:

  • アップロードされるファイルの最大サイズ
  • PHPデフォルト:2M

memory_limit> post_max_size> upload_max_filesize

PHPデフォルト:128M> 8M> 2M

デフォルトでは、post_max_sizeはupload_max_filesizeの4倍でなければなりません。
順番に、memory_limitはpost_max_sizeの16倍にする必要があります

6
Nishanth ॐ

php.iniの変更max_input_vars 1000

3
user7224508