PHPでテキストエリアが投稿されたときに_POSTが空になることがあるのはなぜですか
質問
ubuntu上のApache 2.2.4でのPHP 4.4およびPHP 5.2.3。
Moodle 1.5.3を実行していますが、最近コースを更新するときに問題が発生しました。 $ _POST変数は空ですが、フォームのtextareaに大量のテキストが入力された場合のみです。短いテキストのみを入力した場合、問題なく機能します。
post_max_sizeを8Mから200Mに増やし、memory_limitを256Mに増やしましたが、助けにはなりませんでした。 LimitRequestFieldSizeとLimitRequestLineを16380に倍増し、LimitRequestBodyを0に設定しましたが、改善はありません。
回答をグーグルで検索しましたが、見つかりませんでした。
firefoxのHTTPヘッダーには、正しいデータで3816のコンテンツサイズが表示されるため、$ _ POSTに到達しません。
システムは数週間前まで正常に動作していました。唯一の変更は、/ etc / hostsに対する変更で、exim4電子メールサーバーのHELOの問題を修正しました。
exim4が実行されていない開発マシンで問題を再現できるため、偶然だと思います。
ご協力ありがとうございます。
解決
投稿のサイズではなく、新しい行の前の行の長さです。彼らがMoodle WYSIWYGビューを使用している場合、HTMLは改行なしで1行に入れられます。 htmlに移動して、1000文字ごとにreturnキーを押すと機能しますか?
他のヒント
有用な答えを実際に提供するのに十分な知識がないので、以下はより教育された推測です(少なくともそうだと思います)。
まず、access_logまたは firebug を使用して、リクエスト全体をデバッグする必要があります。 (とにかくFirebugを持っているのは良いことです。)私にとって、あなたの問題はその間にリダイレクトが起こるような音です。例を挙げます:
これがあなたの構造だと仮定します:
/form.php
/directory/index.php
これはあなたのフォームです:
<form action="/directory" method="post">
...
</form>
この場合の問題は、 / directory
が有効なURLであるにもかかわらず、Apacheがもう一度 / directory /
にリダイレクトすることです。したがって、ペイロード( $ _ POST
にあるはずのもの)。
フォームのenctypeは何ですか?フォームを介して送信されるデータの量を制限する可能性があります。
受信した生の$ _POSTデータを次の方法で確認することもできます。
file_get_contents('php://input');
それらが実際にデータ送信であることを確認する。 これらの提案をこちらで入手してください。
ApacheまたはApache / PHP統合の問題のように聞こえます。 $ _POSTが空の場合、httpサーバーがPHPにPOST情報を提供していないことを示唆します。もしあなたが私なら、Apacheの設定を調査します。
これは明らかですが、/ etc / init.d / apache2を再起動しましたか?
また、error_logファイルには、投稿サイズが設定された制限を超えたかどうかに関する情報が表示されます。問題のトラブルシューティングのために冗長性を高めることを検討してください