PHP/Apache/AJAX POST 데이터 제한
AJAX를 사용하여 POST를 통해 대용량(200만 자)의 데이터를 전송하려는 경우 (jQuery), PHP 측에서 데이터 검색에 실패하고 "정의되지 않은 인덱스" 오류를 반환합니다. 이 문제는 충분히 높은(256M) php.ini의 post_max_size 설정과 관련이 없습니다.
제한 조사
문제는 여러 제한이 적용되어 있다는 것입니다. 프로세스에 관련된 다양한 구성 요소별:
-
Apache:
- LimitRequestBody: 들어오는 POST 요청의 최대 크기를 제어합니다. 실제 제한은 기본적으로 약 2GB인지 확인하려면 Apache 오류 로그를 확인해야 합니다.
-
PHP:
- post_max_size: POST 데이터의 크기를 제한합니다. 이 설정이 php.ini에서 충분히 높게 설정되어 있는지 확인하세요(예: 256M).
- upload_max_filesize: POST 데이터와는 관련이 없지만 완전성을 위해 언급할 가치가 있습니다.
- max_input_time: 최대 시간을 제어합니다. POST 데이터 처리가 허용됩니다. 시간 초과를 방지하려면 큰 값으로 설정하십시오(예: -1).
- max_input_nesting_level: POST 데이터에서 중첩 배열의 깊이를 제한합니다. 데이터에 깊게 중첩된 배열이 포함된 경우 이 값을 늘려야 할 수도 있습니다.
- max_execution_time: 문제의 원인일 가능성은 낮습니다.
- memory_limit: PHP 하위 프로세스에 충분한 메모리가 있는지 확인합니다. 데이터를 처리합니다. 이 설정을 적절하게 조정합니다(예: 256M).
- max_input_vars: POST 요청의 변수 수를 제한합니다. 데이터에 많은 요소가 포함된 경우 이 값을 늘려야 할 수도 있습니다.
해결책
Apache의 LimitRequestBody가 다음과 같은 경우 도달하면 컴파일된 제한을 초과하므로 데이터를 직접 POST할 수 없습니다. 데이터를 더 작은 청크로 나누어 여러 POST 요청으로 보내야 합니다.
위 내용은 PHP 제한이 높음에도 불구하고 AJAX POST 데이터가 제한되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!