POST Content-Lengthが制限を超えています


94

ユーザーがファイルをアップロードしているときに、phpのerror_logで同様のエラーが発生する

PHP警告:11933650バイトのPOST Content-Lengthは、行0の不明の8388608バイトの制限を超えています

私のphp.ini(public_htmlで作成されたカスタムiniファイル)では、これでこの問題が解決されますか?約1GBに設定する必要がありますか?php.iniで設定をこれに変更します。問題は解決しますか?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

'memory_limit'制限を何に設定しますか?

また、これは、アップロードされたファイルのサイズが1GB未満であることを確認するためのスクリプトで正しいでしょう。

if($_FILES["uploadedfile"]["size"]<1000000)

5
正しいphp.iniを編集してよろしいですか?
ペッカ

正しいphp.iniを編集していますか(いくつかありますか)?他に何か設定をリセットしていますか?(への例えば任意の呼び出しはphp_ini_set?)
Piskvorは、建物の左

public_htmlにカスタムのphp.iniファイルを作成しました
daza166

@daza:php.iniを任意の場所にドロップすることはできません。PHPは特定の場所のみをチェックし、「現在のディレクトリ」はそれらの1つではありません。特定のディレクトリに設定するには、httpd.confや.htaccessファイルで「php_value」ディレクティブを使用できます。ただし、それ以外の場合は、メインの.iniファイルで変更する必要があります。を使用php_info()して、「ローカル」設定とは何か、どの.iniファイルが使用されているかを確認します。
Marc B

1
info.php <?php phpinfo(); ?>をpublic_htmlにコピーして作成し、ブラウザーで呼び出します。次に、upload_max_filesizeの値が正しいかどうかを確認します。
DanielB

回答:


96

8388608バイトは8Mで、PHPのデフォルトの制限です。php.iniへのこれらの変更により、実際に問題が解決するはずです(Apacheサーバーを作成した後に再起動してください)。

ここでメモリ制限を変更する必要はありません。


.iniファイルに変更を加えた後は、必ずサーバーを再起動してください。
Sandhu

nginx + php sudo service php5-fpm restart
fpm

再起動は私のためにそれをしました。+1ありがとう;)
Refilon 2016年

1
私はちょうどここに私の経験を投稿してみましょう、再起動が私に与えたstop: Unknown instance:、私はその後、しなければならなかった、それだけで新しいのphp5-FPMのインスタンスを作成していたが、私のウェブサーバは、まだ古いものを使用したsudo killall -KILL php5-fpm後、sudo service php5-fpm start
ミーム

アップロードを処理するPHPプロセスで他に何が行われているかに応じてmemory_limit、必要な最大アップロードサイズよりも大きくする必要がある場合があります。
クレイグフィンチ

45

ファイルをpost_max_size8Mから32Mに変更することをお勧めしphp.iniます。


39

あなたはphp.iniで設定するだけです

次に設定:

upload_max_filesize = 1000M;
post_max_size = 1000M;

次に、xamppを再起動します。画像を確認します


17

これを.htaccessに貼り付けてみてください。うまくいくはずです。

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M

10

HTTP POSTメソッドを使用してアップロードする場合、テキストにはファイルサイズや名前などのヘッダーも含まれるため、post_max_sizeupload_max_filesizeよりわずかに大きくする必要があります。

1GiBファイルを正常にアップロードするには、次のように設定する必要があります。

upload_max_filesize = 1024M
post_max_size = 1025M

GBの正しいサフィックスはG、つまり、upload_max_filesize = 1Gであることに注意してください。

memory_limitを設定する必要はありません。


6

場合によっては、最大実行時間を増やす必要があります。

max_execution_time=30

やった

max_execution_time=600000

それから私は幸せでした。


7
多くの場合、php.iniでこれを実行したくない場合があります。これにより、すべてのphpプロセスがその時間実行されるためです。set_time_limit()で単一のファイルに設定できます。例:set_time_limit(600000)
billrichards

5

1つ以上のphp.iniファイルがある場合があります。たとえば、WAMPを使用する場合、次のディレクトリに2つのphp.iniファイルがあります。

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

最初のものを編集する必要があります。


4

私は同意しませんが、php.iniまたは.htaccessのファイルサイズを増やすこの解決策は、ユーザーがサーバーアプリケーションで許可されているよりも大きいファイルを送信した場合は機能しません。これをフロントエンドで検証することをお勧めします。例:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});


2
何に同意しませんか?
ロブ

1
クライアント側を検証することは問題ありませんが、セキュリティのために何もせず、ユーザーが大きなファイルをアップロードしている場合にユーザーに即座に警告を与えるだけです。ここでの全体の目的は、ユーザーが大きなファイルをアップロードできないようにすることではなく、ユーザーが大きなファイルをアップロードできるようにすることです。
アルティマスプライム2018

1
これに対するサーバー側のソリューション/チェックはありませんか?JSチェックを簡単にバイパスできます。
akinuri

Nvm、それを考え出した:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri '26 / 06/26

2

Wampを使用するWindowsでPhp 5.6.Xバージョンを使用している場合、ファイルの場所は次のようになります。

C:\Windows\php.ini

試してみてください

post_max_size = 100M;

Apache 1で変更を試みてください。それによってあなたのWamp / XAMPは.iniファイルをロードします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.