programing

PHP/Apache/AJAX - POST 제한?

minimums 2023. 8. 21. 21:01
반응형

PHP/Apache/AJAX - POST 제한?

200만자(비이진 문자열)의 POST 데이터를 ajax(jQuery)를 통해 보내려고 하는데 PHP 쪽에서 항상 공백으로 나타납니다.내 코드는 다음과 같습니다.

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

PHP 쪽에서 (데이터를 검색하려고 할 때) 다음과 같은 오류 메시지가 표시됩니다.$_POST['data_string']):

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

확인했습니다.post_max_sizephp.ini에서, 그리고 그것은 256M으로 설정되어 있고, 어느 것이 충분해야 합니까?내가 뭘 잘못하고 있는지 모르겠어요

편집: 내가 만든 경우"string"소량의 데이터(예:var string = 'test') 그 때$_POST["data_string"]돌아온다test역시그래서 저는 Apache2, PHP 또는 브라우저 자체에서 제가 도달하고 있는 일종의 데이터 제한이 있는지 궁금합니다.구글 크롬 17.0.963.79를 사용하고 있습니다.

EDIT2:memory_limit = 256Mphp.ini로

EDIT3:max_input_time = -1php.ini로

EDIT4: var_dump($_POST)가 어레이(0)를 반환합니다.

EDIT5: 데비안 스퀴즈에서 최신 안정 버전의 PHP5 실행: PHP 5.3.3-7+squeeze8 with Suhosin-Patch (cli) (구축됨:2012년 2월 10일 14:12:26)

사용자와 서버 간의 모든 항목에 대한 제한 매개 변수를 확인해야 합니다.프록시 서버가 있다면 상당히 힘들지만 적어도 다음을 확인할 수 있습니다.

Apache:

  • LimitRequestBody(기본적으로 약 2Gb)는 64비트에 대해 더 클 수 있습니다. 자세한 내용은 오류 로그를 확인하십시오.

PHP:

  • POST 크기와 직접 관련된 post_max_size
  • upload_max_filesize(관련이 없을 수 있음), 확실하지 않음
  • max_input_time(POSt 시간이 너무 오래 걸리는 경우)
  • 데이터가 하위 수준이 많은 배열인 경우 max_input_message_level
  • max_max_max_time, 하지만 그것이 아니라는 것은 꽤 확신합니다.
  • memory_limit, 하위 프로세스에서 허용되는 메모리를 초과하는 크기에 도달할 수 있습니다.
  • max_input_message, 데이터 배열에 요소가 많은 경우

Apache용으로 컴파일된 제한에 도달한 경우 이러한 큰 데이터 덩어리의 직접적인 POSt를 피하는 것이 유일한 해결책입니다. 따라서 데이터를 조각조각 분해해야 합니다.

수호신도 확인하실 수 있습니다.ini 설정(예:

suhosin.post.max_value_length = 65000

set_time_limit(0)메모리 제한을 설정할 수도 있습니다.

편집: 다음과 같은 작업도 수행할 수 있습니다.console.log(string)또는console.log(string.length);요청이 제대로 설정되었는지 확인하기 전에, 또한 Firebug 또는 Chromes 개발 도구에서 요청을 확인하여 데이터가 전송되고 있는지 확인합니다.

//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 파일과 정렬된 파일에 추가합니다.

언급URL : https://stackoverflow.com/questions/9691057/php-apache-ajax-post-limit

반응형