Question

PHP 4.4 et PHP 5.2.3 sous Apache 2.2.4 sous Ubuntu.

J'utilise Moodle 1.5.3 et j'ai récemment eu un problème lors de la mise à jour d'un cours. La variable $ _POST est vide, mais uniquement si une grande quantité de texte a été entrée dans la zone de texte du formulaire. Si seulement un court texte est entré, cela fonctionne bien.

J'ai augmenté la taille post_max_s de 8 millions à 200 millions et augmenté le paramètre memory_limit à 256 millions, mais cela ne m'a pas aidé. J'ai doublé les valeurs LimitRequestFieldSize et LimitRequestLine à 16380 et ai défini LimitRequestBody sur 0 sans amélioration.

J'ai cherché une réponse sur Google mais je suis incapable d'en trouver une.

Les en-têtes HTTP sur firefox indiquent la taille du contenu de 3816 avec les données correctes. Par conséquent, il ne parvient pas à atteindre $ _POST.

Le système fonctionnait bien jusqu'à il y a quelques semaines. Le seul changement apporté à / etc / hosts consistait à corriger un problème HELO avec le serveur de messagerie exim4.

Je peux reproduire le problème sur une machine de développement sur laquelle exim4 ne tourne pas, alors je pense que ce n'est qu'une coïncidence.

Merci de votre aide.

Était-ce utile?

La solution

Pourrait-il ne pas s'agir de la taille de la publication, mais de la longueur de la ligne avant une nouvelle ligne. S'ils utilisent la vue WYSIWYG de Moodle, le code HTML sera simplement mis en ligne sans pause. Si vous allez en html et que vous appuyez sur Entrée environ tous les 1000 caractères, est-ce que cela fonctionne?

Autres conseils

Je ne sais pas assez pour fournir une réponse utile, ce qui suit est une supposition plus instruite (du moins, je l'espère).

Tout d'abord, vous devez déboguer l'intégralité de la demande, soit par access_log, soit par exemple via firebug . (C'est bien d'avoir Firebug quand même.) Pour moi, votre problème sonne comme si une redirection se produisait entre les deux. Je vous donne un exemple:

Supposons qu'il s'agit de votre structure:

/form.php
/directory/index.php

Ceci est votre formulaire:

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

Dans ce cas, le problème est que, même si / directory est une URL valide, Apache vous redirigera une fois de plus vers / directory / , de sorte que vous perdez votre charge utile (ce qui est supposé être dans $ _ POST ).

Quel est l'enctype du formulaire? Peut-être que cela limite la quantité de données envoyées via le formulaire.

Vous pouvez également vérifier les données brutes $ _POST brutes avec:

file_get_contents('php://input');

Pour s’assurer qu’il s’agit bien d’un envoi de données. Vous avez ces suggestions ici .

Cela ressemble à un problème d’intégration Apache ou Apache / PHP. Si $ _POST est vide, cela indiquerait que le serveur http ne donne pas les informations POST à ??PHP. Si j'étais vous, j'examinerais la configuration d'Apache.

Ceci est évident, mais avez-vous /etc/init.d/apache2 redémarré?

De plus, le fichier error_log doit afficher des informations indiquant si la taille de publication dépasse la limite définie. Pensez à augmenter votre verbosité pour résoudre le problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top