2008-10-23 3 views
5

우분투의 Apache 2.2.4에서 PHP 4.4 및 PHP 5.2.3.텍스트 영역을 PHP로 게시 할 때 _POST가 때때로 비어있는 이유는 무엇입니까?

나는 Moodle 1.5.3을 사용하고 있으며 코스를 업데이트 할 때 최근에 문제가 발생했습니다. $ _POST 변수는 비어 있지만 양식의 많은 텍스트가 텍스트 영역에 입력 된 경우에만 사용됩니다. 짧은 텍스트 만 입력하면 제대로 작동합니다.

저는 post_max_size를 8M에서 200M으로 늘렸고 memory_limit를 256M으로 늘렸지 만 이것이 도움이되지 않았습니다. LimitRequestFieldSize 및 LimitRequestLine을 16380으로 두 배로 늘렸고 LimitRequestBody를 0으로 설정하지 않았습니다.

나는 go 소리로 대답했지만을 찾을 수 없었다.

HTTP 헤더에서 파이어 폭스의 콘텐츠 크기가 3816이며 올바른 데이터로 표시되어 $ _POST에 도달하지 못했습니다.

시스템은 몇 주 전까지 정상적으로 작동 중이었습니다. 유일한 변경 사항은 exim4 전자 메일 서버에서 HELO 문제를 해결하기 위해/etc/hosts에있었습니다.

exim4가 실행되지 않는 개발 컴퓨터에서이 문제를 복제 할 수 있으므로 우연의 일치라고 생각합니다.

도움 주셔서 감사합니다.

+0

엽기. 정확한 기준치를 확인 했습니까? 세부 사항은 문제를 재현하려는 사람들에게 유용 할 수 있습니다. –

+0

소량의 텍스트에는 아무런 문제가 없다고 말했습니까? 대략적인 한도를 찾을 수 있었습니까? – nickf

+0

이것은 분명 할 수 있지만 폼이 실제로 POST를 사용하고 GET하지 않는지 확인 했습니까? – troelskn

답변

1

게시물의 크기와 관련이 없지만 줄 바꿈이 새 줄 앞에 얼마나 오래있을 수 있습니까? 그들이 Moodle WYSIWYG 뷰를 사용한다면, html은 중단없이 한 행에 들어갈 것입니다. html로 들어가서 1000자를 넘겨 주면 되나요?

0

Apache 또는 Apache/PHP 통합 문제와 비슷합니다. $ _POST가 비어 있으면 http 서버가 PHP에 POST 정보를 제공하지 않는다는 것을 알 수 있습니다. 내가 너라면 아파치 설정을 조사 할 것이다.

+0

HTTP 라이브 헤더 (파이어 폭스 확장자)는 POST 내용을 올바르게 보여줍니다. – Puzzled

0

이것은 분명하지만 /etc/init.d/apache2를 다시 시작 했습니까?

또한 error_log 파일에는 게시 크기가 설정 한도를 초과했는지 여부에 대한 정보가 표시되어야합니다. 문제 해결을위한 자세하게 표시를 고려하십시오.

1

양식의 형식은 무엇입니까? 양식을 통해 전송되는 데이터의 양을 제한 할 수 있습니다.

은 또한으로 들어오는 원시 $ _POST 데이터를 확인 할 수 있습니다 :

file_get_contents('php://input'); 

실제로 데이터를 보내 자신의 있는지 확인하십시오. 이 제안이 있습니다 here.

+0

비어 있습니다. – Puzzled

2

정말 유용한 답을 제공하기에 충분하지 않으므로 다음은 잘 교육 된 추측입니다 (적어도 나는 그렇게 희망합니다).

먼저 전체 요청을 access_log 또는 firebug을 통해 디버깅해야합니다. (어쨌든 방화 녀석을 가지고있는 것이 좋다.) 나에게 당신의 문제 처럼 들린다.내가 당신에게 예를 제공합니다 :

이 가정을이 당신의 구조 :

/form.php 
/directory/index.php 

이 양식입니다 :이 경우

<form action="/directory" method="post"> 
... 
</form> 

문제입니다, 비록 /directory가 유효한 URL입니다, 아파치가 한 번 더 /directory/으로 리다이렉트 할 것이므로, 페이로드를 잃어 가고있다 (무엇이 $_POST에 있어야하는지).

관련 문제