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
'programing' 카테고리의 다른 글
| Sequence Pro: 홈브루를 통해 설치된 mariadb를 사용하여 '127.0.0.1'(61)의 MySQL 서버에 연결할 수 없습니다. (0) | 2023.08.21 |
|---|---|
| 이미지를 에이미지를 에요소 (0) | 2023.08.21 |
| jQuery.offset()을 사용하여 위치를 가져오고 설정합니다. (0) | 2023.08.21 |
| Sequetize.js에서 생성한 SQL을 보려면 어떻게 해야 합니까? (0) | 2023.08.21 |
| cgroups와 네임스페이스 간의 차이 (0) | 2023.08.21 |