Pergunta

PHP 4.4 e PHP 5.2.3 sob o Apache 2.2.4 no Ubuntu.

Estou executando o Moodle 1.5.3 e recentemente teve um problema ao atualizar um curso. A variável $ _ POST está vazio mas somente se um monte de texto foi inserido no textarea no formulário. Se apenas um pequeno texto é inserido ele funciona bem.

Eu aumentei a post_max_size de 8m a 200M e aumentou o memory_limit para 256M, mas isso não ajudou. Eu dobrei o LimitRequestFieldSize e LimitRequestLine para 16380 e conjunto LimitRequestBody a 0 com nenhuma melhoria.

Eu pesquisei para uma resposta, mas têm sido incapazes de encontrar um.

cabeçalhos HTTP em shows firefox o tamanho do conteúdo de 3816 com os dados corretos, pelo que a sua simplesmente não chegar a $ _POST.

O sistema estava funcionando muito bem até algumas semanas atrás. A única mudança foi a / etc / hosts para corrigir um problema HELO com o servidor de e-mail exim4.

Eu posso replicar o problema em uma máquina de desenvolvimento que exim4 não correr, então eu acho que é apenas coincidência.

Obrigado por sua ajuda.

Foi útil?

Solução

Poderia ser não o tamanho relacionado do post, mas por quanto tempo a linha é antes de uma nova linha. Se eles usam o Moodle WYSIWYG ver o html seria apenas se colocar em uma linha sem quebras. Se você entrar em html e hit retorno em torno de cada 1000 caracteres funciona?

Outras dicas

Eu não sei o suficiente para realmente dar uma resposta útil para que o seguinte é mais uma suposição bem-educado (pelo menos eu espero que sim).

Primeiro, você deve depurar o pedido na totalidade, quer por access_log ou, por exemplo, através firebug . (É bom ter Firebug de qualquer maneira.) Para mim o problema sons como um redirecionamento acontece no meio. Dou-lhe um exemplo:

Suponha que esta é a sua estrutura:

/form.php
/directory/index.php

Esta é a sua forma:

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

O problema neste caso é que, embora /directory é uma URL válida, o Apache irá redirecioná-lo mais uma vez para /directory/, portanto, você está perdendo a sua carga útil (o que é suposto estar em $_POST).

O que é o enctype do formulário? Pode ser que ele limita o ammount de dados enviados através do formulário.

Você também pode querer verificar os dados brutos $ _POST recebida com:

file_get_contents('php://input');

Para certificar-se o seu é realmente enviar dados. Tem estas sugestões aqui .

Parece que um Apache ou problema de integração Apache / PHP. Se $ _POST é esvaziá-la seria sugerir que o servidor http não está dando a informação POST para PHP. Se eu fosse você eu investigar a configuração do Apache.

Isso é óbvio, mas você /etc/init.d/apache2 restart?

Além disso, o arquivo error_log deve mostrar algumas informações sobre se o tamanho pós excedeu o limite definido. Considere aumentar o seu detalhamento para solucionar a questão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top