¿Por qué a veces _POST está vacío cuando se publica un área de texto en PHP?

StackOverflow https://stackoverflow.com/questions/229269

  •  04-07-2019
  •  | 
  •  

Pregunta

PHP 4.4 y PHP 5.2.3 bajo Apache 2.2.4 en ubuntu.

Estoy ejecutando Moodle 1.5.3 y recientemente tuve un problema al actualizar un curso. La variable $ _POST está vacía pero solo si se ingresó una gran cantidad de texto en el área de texto en el formulario. Si solo se ingresa un texto breve, funciona bien.

He aumentado el tamaño de post_max de 8M a 200M y he aumentado el límite de memoria a 256M, pero esto no ha ayudado. He duplicado LimitRequestFieldSize y LimitRequestLine a 16380 y he establecido LimitRequestBody en 0 sin ninguna mejora.

He buscado en Google una respuesta pero no he podido encontrar una.

Los encabezados HTTP en Firefox muestran el tamaño del contenido de 3816 con los datos correctos, por lo que simplemente no llega a $ _POST.

El sistema estaba funcionando bien hasta hace unas semanas. El único cambio fue a / etc / hosts para corregir un problema de HELO con el servidor de correo electrónico exim4.

Puedo replicar el problema en una máquina de desarrollo que tiene exim4 no ejecutándose, así que creo que es solo una coincidencia.

Gracias por su ayuda.

¿Fue útil?

Solución

Podría no ser el tamaño relacionado con la publicación, sino la longitud de la línea antes de una nueva línea. Si usan la vista Moodle WYSIWYG, el html solo se colocará en una línea sin interrupciones. Si ingresa en html y pulsa regresar alrededor de cada 1000 caracteres, ¿funciona?

Otros consejos

No sé lo suficiente como para proporcionar una respuesta realmente útil, por lo que la siguiente es más una suposición bien educada (al menos eso espero).

Primero, debe depurar la solicitud completa, ya sea mediante access_log o, por ejemplo, a través de firebug . (De todos modos, es bueno tener Firebug). Para mí, su problema suena como si una redirección ocurriera en el medio. Te doy un ejemplo:

Suponga que esta es su estructura:

/form.php
/directory/index.php

Este es tu formulario:

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

El problema en este caso es que, aunque / directory es una url válida, Apache lo redireccionará una vez más hacia / directory / , por lo que está perdiendo su carga útil (lo que se supone que está en $ _POST ).

¿Cuál es el enctype de la forma? Podría ser que limita la cantidad de datos enviados a través del formulario.

Es posible que también desee verificar los datos de $ _POST sin procesar entrantes con:

file_get_contents('php://input');

Para asegurarse de que realmente se envían datos. Recibí estas sugerencias aquí .

Suena como un problema de integración de Apache o Apache / PHP. Si $ _POST está vacío, sugeriría que el servidor http no está dando la información POST a PHP. Si yo fuera tú, investigaría la configuración de Apache.

Esto es obvio, ¿pero /etc/init.d/apache2 restart?

Además, el archivo error_log debe mostrar cierta información sobre si el tamaño de la publicación superó el límite establecido. Considere aumentar su verbosidad para solucionar el problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top