2012-03-13 44 views
12

私はajax(jQuery)を介して200万文字の大きさ(非バイナリ文字列)のPOSTデータを送信しようとしていますが、PHP側では常に空白として表示されます。ここに私のコードです:PHP側でPHP/Apache/AJAX - POST制限?

var string = "<data string that is 2M chars long>"; 
$.ajax({ 
    cache: false, 
    type: 'POST', 
    url: 'data.php', 
    data: {'data_string': string} 
}); 

、私は次のエラーメッセージが表示されます($_POST['data_string']からデータを取得しようとしたとき):

Notice: Undefined index: data_string in data.php on line ... 

私はpost_max_size php.iniでチェックしましたそれは十分であるはずの256Mに設定されていますか?私は...

EDIT困惑し、私が間違ってやっているかわからないんだけど:私は予想通り、その後"string"(例えばvar string = 'test')少量のデータ$_POST["data_string"]戻りtestを作る場合。だから私はApache2、PHPまたはブラウザ自体に到達している何らかのデータ制限があるのだろうか? memory_limit = 256M

php.iniのEDIT3: max_input_time = -1

php.iniのEDIT4:私はGoogle Chromeの17.0.963.79

EDIT2使用しているのvar_dump($ _ POST)の配列を返します(0)

EDIT5:debian squeezeでPHP5の最新安定版を実行する:PHP 5.3.3-7 + Suhosin-Patch(cli)付きsqueeze8(組み込み:2月10 2012 14:12:26)

+1

同じエラーは、 'test'などかなり小さい文字列、と固執していますか?未定義の索引は、それが掲示されていないかのように見える。 – MetalFrog

+1

いいえ、小さなテキストデータでもエラーは発生しません。 –

+0

'var_dump($ _ GET);を試してください。 var_dump($ _ POST); 'もし何もないなら、可能な制限のためにapache設定ファイルをチェックしてください。 – Robus

答えて

21

あなたとサーバーの間のすべてのアイテムの制限パラメータをチェックする必要があります。かなりハードがあればプロキシサーバのために、しかし、少なくともあなたが確認できます。

アパッチ:

  • LimitRequestBodyを、2Gbの周りデフォルトでは、64-ビットのために多分それ以上、詳細については、エラーログを確認してください。

PHP:ポストは時間がかかりすぎる場合は、直接、わからない無関係かもしれPOSTサイズ

  • upload_max_filesize
  • max_input_timeに関連している

    を持っている場合は、メモリ

  • max_input_vars許可されたサブプロセスをexcedingサイズに達する可能性として、それは、その
  • memory_limitではありませんかなり確実Apacheの場合、唯一の解決策は、このような大量のデータを直接POStすることを避けることです。それを分割する必要があります。

  • +0

    ありがとう、私は文字列が大きすぎると思うし、おそらくちょうどそれを断片に分解するでしょう。 –

    +2

    ありがとうございました。このため、 'max_input_vars'が私たちの犯人でした。 – Ruben

    0

    set_time_limit(0)とお客様のを設定してください。

    EDIT:あなたはまた、console.log(string)したいこともあるでしょう。またはconsole.log(string.length);を入力して、正しく設定されていることを確認してください。また、FirebugまたはChromeの開発ツールでリクエストを確認し、データが送信されていることを確認してください。

    +0

    memory_limit = 256M、set_time_limit(0)は何も変更しませんでした。 –

    +1

    また、max_input_time ini設定もあります。実際の変更が反映されることも確認してください。 – miki

    +0

    max_input_timeを-1に設定しても、問題はそのまま残ります。 –

    2

    また例えば、suhosin.ini設定を確認することができ:

    suhosin.post.max_value_length = 65000 
    
    -1
    //Adding Respond Box After Selected Field 
    $('[maxlength]').bind('click keyup', function(){ 
        var RespondBox = '<div class="StPgRp" id="UpdateRespond"></div>'; 
        $('#UpdateRespond').remove(); 
        $(this).after(RespondBox); 
    }); 
    
    //Counting Maximum Characters Allowed In Selected Field 
    $('[maxlength]').bind('click keyup', function(){ 
        var MaxLength = $(this).attr('maxlength'); 
        var CurrentLength = $(this).val().length; 
        var Remainder = MaxLength - CurrentLength; 
        $('#UpdateRespond').html('You have ' + Remainder + ' characters remaining.'); 
    }); 
    
    //Checking the PHP Function if YES then send message to user 
    $('.Check').bind('click keyup', function(){ 
        var Check = $(this).parent().children('.Check').val(); 
    }); 
    

    をご.jsファイルページにリンクして、ソートにこれを追加!

    0

    パラメータ名から一重引用符を削除するだけです。

    から:

    data: {'data_string': string} 
    

    へ:

    data: {data_string: string}