5

かなりアクティブなサイトを実行しているサーバーで奇妙なバグが発生しました。

  • サーバー: Apache/2.2.3 (CentOS)
  • PHP: 5.2.6
  • eAccelerator 0.9.5.3

マルチパートフォームを使用しているときに、テキストエリアから送信されたデータが $_POST で欠落することがあります

content_length が 1K を超える適切なサイズを示しているため、データが送信されたことがわかります。

フォームの他のすべての入力フィールドは適切に受信されます。

これはブラウザ固有ではなく、IE/Firefox/Chrome で発生します。

ほぼ 99% の確率で機能し、投稿が 100 回行われるごとに平均 1 ~ 2 回しか失敗しません。

ごくまれに、自分で再現できたので、データが送信されていることがわかりましたが、apache/php によって処理されていません。

これらの設定はすべてチェック済みであり、php.ini で適切です。

memory_limit
max_input_time
upload_max_file_size
post_max_filesize

httpd.conf で

LimitRequestBody
TimeOut

これが何であるか他のアイデアを聞きたいです。PHP に関連する既知のバグは見つかりません。

4

1 に答える 1

2

これが問題かどうかはわかりませんが (推測しやすい質問ではありません ^^ )、suhoshinセキュリティ パッチ/拡張機能をお持ちの場合は、それを無効にしてみましたか?
(CentOSでデフォルトでアクティブ化されているかどうかはわかりませんが、「エンタープライズ指向が少ない」Ubuntu上にあることを考えると、そうかもしれません)

このバグレポートのためにこれを提案しています。たとえば、次のようなメモがいくつかあります。

[2007 年 10 月 30 日 11:02am UTC] gjl-network dot net の sbauer

この問題が発生している間に、この問題の原因が suhosin パッチであることがわかりました。これは、デフォルトで、cookie、request、post、get、および session vars の長さの最大制限を持つように構成されていました。たとえば、POST の場合は次のようになります。

suhosin.post.max_array_depth 100 100 suhosin.post.max_array_index_length 64 64 suhosin.post.max_name_length 64 64 suhosin.post.max_totalname_length
256 256 suhosin.post.max_value_length 65000 65000 suhosin.post.max_vars
200 200

これらの導関数は、適切に高い数値に設定する必要があります。たとえば、私たちの場合、問題は POST データが長すぎることでした (これは、ここにいる多くの人に当てはまるようです)。

したがって、php.ini または (ディストリビューションによっては suhosin.ini が存在することが多い) を確認し、上記の値を修正するか、0 に設定して無効にすることをお勧めします。これらの導関数が設定されていない場合は、デフォルト値が使用されます。確認/追加する必要があります: suhosin.post.max_.... suhosin.request.max_... suhosin.get.max_... suhosin.session.max_... suhosin.cookie.max_...

これらの値がリストされているはずの phpinfo() を参照してください!

および/または:

[2008 年 11 月 13 日午後 4 時 58 分 UTC] keith at tdrnetworks dot com

enctype="multipart/form-data" が $_POST 変数に入力されていないことに関して、私の解決策は Suhosin セキュリティ モジュールを無効にすることであることがわかりました。

やってみます!

次のような注意書きもあります。

[2 月 5 日午後 6 時 49 分 UTC] ニール ドット プレスリー at yahoo dot com

私は同じ問題に直面していました。ラジオボタンまたはチェックボックスを送信するphpスクリプトを含むhtmlフォームがありました。フォームを投稿すると、PHP は投稿パラメーターを見つけられませんでした。それはランダムで、機能しているときもあれば、機能していないときもありました。Get を試してみましたが、うまくいくときもあれば、うまくいかないときもありました。次に、ENCTYPEを大文字から小文字に変更すると、正常に機能し始めました

あなたのフォーム/ページは HTML に対応していますか? まれに、そうでない場合もありますか?


多分これが役立つでしょう... そうでない場合は、この問題の理由を知りたいです!

于 2009-07-28T05:35:59.580 に答える