POSTデータが送信されなくなってしまった!原因と解消方法を教えてください

このQ&Aのポイント
  • Apache2+PHP4の環境下で、ある時から急にPOSTデータの送受信ができなくなってしまいました。
  • フォームで送信されたPOSTデータが無い状態になり、再起動すると問題は解消されますが、しばらくすると再発します。
  • 原因や解決方法がわからず困っています。どなたかご教授いただけないでしょうか。
回答を見る
  • ベストアンサー

POSTデータが送信されなくなりました。

ある時から急にApache2+PHP4の環境下でPOSTデータが送信(又は受信)が出来なくなりました。 現象としましては、フォームで送信されたPOSTデータが送信(又は受信)出来ず、$_POSTの中を開いてみても何も無い空の状態で、念のため$_GETを開いて見ても空の状態でした。 この現象が出ている状態で、GETでデータを送信したところ、これは送受信共に可能でした。 Apacheを再起動すると現象は無くなるのですが、1日程すると再発します。 早いときでは半日程で…。 再起動してから再発するまでの期間は定まっていないみたいなので、定期的に再起動させるという方法がとれそうになく、 またその現象が出る原因が私には全くわからず… この現象はどういった時に何が原因で発生し、また解消方法を知っている方がいましたら教えて頂けないでしょうか。 Apache等のバージョンは Apache/2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8d PHP/4.4.6 です。 SSL通信でやっていますので、一応そちらの方も記載しておきます

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • gabinchi
  • ベストアンサー率30% (3/10)
回答No.3

#1です。 SSLに関しては詳しくないので、そちらの方との複合要因の可能性もあるので、一概にApache、PHPのみの問題と片付けるのも駄目かもしれませんね。 マイナーアップの時も、慎重に行ってください。 私の場合は、本番機、予備機がありますので、ちゃんと確認をおこなってからやっています。(でもマイナーアップ時に問題になった記憶はありませんが。) あと蛇足ですが、Zend Studioは使ってます? Zend Studioをサーバーとローカルに入れておくとステップ実行でその時々の値(もちろん、$_POSTも)の変遷をwatchする事が出来ますので、開発効率が段違いになりますし、不具合の発見にも役立ちます。 ちょっと高いですが、値段分はあるかと思います。 評価版も(会員登録すれば)試用出来ます。 http://www.zend.co.jp/ Eclipse+PDTという組み合わせもありますね。 動くようにするには、諸設定の敷居が高そうですが。 http://hp.vector.co.jp/authors/VA000137/phpide/qanda.html

msz1124
質問者

お礼

回答有難うございます。 返事が遅くなり大変申し訳ございません。 SSLを入れてくれた方に現象を話してみたのですが、分からないと言う事なので、 一応私自身の開発環境(PHP4.4.4)に設定ファイル以外を上書きし、現在問題が無いか確認しているところです。 紹介していただいたZend Studioも評価版で試用してみています。 まだ慣れないので、急な対応等は以前から使っているエディタで作業していますが、 Zend Studioの方も使っていってみようと思います。

その他の回答 (2)

  • gabinchi
  • ベストアンサー率30% (3/10)
回答No.2

#1です。 ApacheやPHP自体にこんなベーシックな所で問題があるとすれば大問題になっているでしょうし、パッチも当然出ている事でしょう。 PHP4.4.7のChangeLogも見てみましたが、こういった現象に関するアナウンスはありませんでした。 したがって、ApacheやPHP自体の問題ではなく、インストールしているマシンや環境に依存する、個別の問題の可能性が高いと思っています。 なので、PHPなりApacheの再インストールをお勧めするわけです。 (設定かもしれませんが、こんな掲示板ではうかがい知れないので。) また、PHPのマイナーバージョンアップは基本的にバグフィックスですから、(事前に検証の必要はありますが)、最新のにしておくべきだと思います。 phpinfoに関しては「思います」レベルでなく、異常時と正常時のスクリーンショットやそのソースを取るなどして、詳細に比較すべきでしょう。 あと、私の環境はLinuxなので、Windows固有の問題だと分かりません。すみません。 なお、PHP4とPHP5ではコマンドの解釈などが違う部分もあり、動作検証や最適化は必須です。 ですが、PHP4のサポートが無くなると分かった以上、(趣味で使っているなら別ですが、業務で使っているなら)、PHP5への移行は必須だと考えます。

msz1124
質問者

お礼

回答有難うございます。 ApacheやPHP自体の問題ではなく、マシンの環境が問題ですか… ApacheはSSLの設定等があり、私自身でのバージョンアップが難しいので一先ずPHP4.4.7にバージョンアップをしようかと思います。 今までバージョンアップをすると、環境によって動かなくなるのでは…と思い込んで、バージョンアップを実行したことがなかったのですが、 Windowsでマイナーバージョンアップの場合、設定ファイルはそのままに上書き等でやるものなのでしょうか… それとも、やは最初にインストールした時同様の作業をした方が良いのでしょうか。 業務で使っているものなので、仰る通りサポートが無くなるのならPHP5への移行は必須なのでしょうね… PHP5への移行は入れ直すのは仕方がないものとして、現象が出ているサーバーで動かしているシステムがなかなか止められない物で… phpinfoについては、正常時にページを保存し、異常時と比較していきたいと思います。

  • gabinchi
  • ベストアンサー率30% (3/10)
回答No.1

phpinfo()の値は正常時と異常時で違いはありませんか? 突然と言う事ですが、不具合が起きる前にApacheやPHPのupdateとかの作業はおこないませんでしたか? また、PHP4は最新Verが4.4.7なので、そちらにupdateしてみると言う手もあるかもしれません。 もしくはapacheの再インストールとか。 なお、余談ですが、PHP4は今年一杯のサポートで、それ以降は改修の手が入らないようです。 早めにPHP5なりに移行された方が良いかと思います。

msz1124
質問者

お礼

早速のご回答有難うございます。 phpinfo()の値は特に違いがあるようには思えませんでした。 全部を記憶してあるわけではないので、不確かですが、特に気になるような点は無いように思えます。 ApacheやPHPのupdate作業も行っていないのにも関わらず、突然で困っています。 いつも私が立ち上げるApache+PHPのバージョンが Apache/2.0.58 PHP/4.4.4 なのですが、今回バージョン等が違い、その辺の相性等があったりするのかもと思ったのですが、その辺はどうでしょうか。 あと、POSTデータの送受信が出来ない件なのですが、 私は勝手にApache側の問題だと思い込んでいたのですが、PHP側の問題という可能性もあるのでしょうか。 上記の2点の可能性が充分にあるようであれば、Apache乃至はPHPのバージョンアップをするしかないのかと考えています。 最後に、バージョンアップをする場合についてですが、 新しいバージョンの物を再度入れなおすという作業になるのでしょうか。 追加質問のようになってしまい、大変恐縮ですが、ご意見お聞かせいただけませんでしょうか。 よろしく御願いいたします。

関連するQ&A

  • jQueryでGETだと送信できるデータがPOSTだと送信できません。

    jQueryでGETだと送信できるデータがPOSTだと送信できません。 jQueryをつかって文字列をPHPに送信したいのですが、GETでは送信できるのにPOSTだと送信ができません。 js -------------------- $.ajax({ type:"POST", //GETだと送信できます。 url:"hoge.php", data:{data:"hoge"}, success:function(data,status){ alert(data); } }); -------------------- php -------------------- <?php $_POST[data] //GETの場合、$_GET[data] == "hoge"。 echo $data; ?> -------------------- 問題点がわかりましたらご指摘いただければと思います。

  • POSTにしてもurlにデーターが

    HTMLのformでmethod="GET" PHPへデータ受け渡しOKですが、 method="POST"にするとNGです。 POSTにしてもデータがURLに載っている状態なので 送信側formでPOSTになっていないとおもうのですが なぜでしょうか??

    • 締切済み
    • PHP
  • $POSTの送信

    POSTデータを送信する方法を教えてください。 PHPのPOSTを用いたプログラミングを行っています。 以下のように、前ページ受信したPOSTの内容(「aaa」)を hiddenで送信したいと思いましたが 次ページ(result.php)にて「$name」と受信してしまいます。 (前略) <?php $name = $_POST['name']; echo $name; ?> <form action="result.php" method="POST"> <input type="hidden" name="name2" value=$name> <input type="radio" name="name3" value=" (以下略) 説明下手ではありますがご回答頂きたいと思います。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • フォームのPOST情報が渡らない?

    こんにちは。 PHPを使ってフォームからの入力情報をPOSTで受け取り確認画面を出す、というような機能を作成しているのですが、たまにデータが受け取れずに初期画面へ戻ってしまう現象が起こります。 POSTではなくGETにするとキチンと送信出来ているようなのですが、情報量やその他の面からGETを使うことは避けたいと思っています。 POSTされた情報が受け取れないという現象は、再現が難しく、出るときは出るし出ないときはまったく出ません。 これまで調べた回避方法で以下の2つは試してみましたが、どちらも現象を止めるには至りませんでした。  ・<form>タグに『 enctype="multipart/form-data"』を追加する  ・<input type="hidden" name="spoof">を追加する また、マルチバイト文字をフォームに入力しない場合は、現象がまったく再現しないようでした。 この現象の回避策を何かご存知の方、アドバイスよろしくお願いいたします。 ------使用環境-------------- OS   :Windows2000 ブラウザ:Internet Explorer 6.0.2800.1106(更新バージョンSP1) Apache :Server version: Apache/1.3.29 (Unix) PHP   :PHP 4.3.4 (cli) (built: Dec 1 2003 18:13:50) ------POST情報取得処理------ function get_post_vers(){ foreach($_POST as $key => $val){ $GLOBALS["$key"] = $val; } return; }

    • ベストアンサー
    • PHP
  • GETはできるがPOSTができない、、、

    PHPの勉強を始めたのですが、困ってるので教えてください。 HTMLのformタグでmethod="GET"では、PHPへデータが渡るのですが、"POST"ではデータが渡りません。 このような場合、どのような原因が考えられるのでしょうか? 環境は OS: WindowsXP(SP2 PHP: 4.3.10 Apache: 2.0.52 すべてSJISで統一しています。 よろしくお願いします。

    • 締切済み
    • PHP
  • XDomainRequestによるPOST送信

    こんばんは。 クロスドメインかつIEに対応するためにXDomainRequestを使っているのですが、POST送信する方法で詰まっています。 サーバ側のPHPファイルに対してPOSTでデータを送信したいのですが、サーバ側では受信できていません。 (↑php側でログを残すことで、受信できていないことを確認しています) データ送信の形式はXMLHttpRequestと同じように、send(key=value)としていますが間違っているでしょうか。 私なりに調べてみましたが、send(null)としているサイトが多くパラメータを送信しているのが見つからなかったため、こちらで質問させて頂きました。 宜しくお願いします。 クライアント側のコードは、 if(window.XDomainRequest){ var xdr = new XDomainRequest(); xdr.onload = function(){ alert(xdr.responseText); } xdr.open("post", "サーバ側PHPファイル"); xdr.send("key=value"); //ここでデータ送信 } サーバ側PHPファイルは、 header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Headers:Content-Type"); if($_POST['value']){ $result = "RESULT:".$_POST['value']; echo "'$result'"; }

  • XMLデータをPOSTで送信・受信する方法

    PHP初心者です。 以下のようなXMLのデータをPOSTで送信、送信されてきたXMLデータを受信する方法がわからず行き詰っています。 フォームで以下のXMLデータをtest.phpに送ってみようと試しているのですが、valueにXMLのデータをどのようにセットすればいいのかわかりません。 そもそもこの方法が合っているのかどうかも自信がない状態です。 仕事の関係でどうしても今週中に仕上げなければならず、 大変困っています。 どなたかアドバイスをください。 よろしくお願いします。 <form action="test.php" method="post">   <input type="hidden" name="xmldata" value="">   <input type="submit" value="送信"> </form> 【test.xml】 <?xml version="1.0" encoding="UTF-8"?> <test> <sample01>あいうえお</sample01> <sample02>かきくけこ</sample02> </test>

    • 締切済み
    • PHP
  • javascriptでポスト送信したデータの受け取り方

    javascriptで下記のようにPOST送信したデータのPHP側での受け取り方 xmlhttp.open("POST","../login/logincheck.php",true); xmlhttp.send("id="+encodeURI("saa")+"&password="+encodeURI("6")); 一応普通にPHP側では以下のように受け取ってみましたが、うまくうけとれていないようなのですが、どうしたらよいでしょうか? $id = $_POST['id']; $keyword = $_POST['password'];

    • ベストアンサー
    • PHP
  • HTMLファイルからPHPファイルへの送信

    PHP超初心者です。 現在「基礎からのMYSQL」という本でXAMPPを導入しMySQL,PHPの基礎を勉強中です。 本にある通りにHTMLおよびPHPファイルを作成してみましたが、データ送信(post)がうまくいきません。 okuri.htmlファイルでテキストを入力してuke.phpファイルで入力されてテキストを表示するだけなのですが、入力し送信してもPHP側にはエラーも何も表示されません(真っ白です)。 Apacheも正常に起動しています。 原因がまったくわかりません。 考えられる原因をおしえてください。よろしくおねがいします。 okuri.htmlファイルの内容 <form method="post" action="uke.php"> <input type="text" name="a"> <br> <input type="submit" value"送信"> </form> uke.phpファイルの内容 <?php print $_post["a"] ?> 1.Windows7使用 2.XAMPPを導入した付属CD-ROMの内容  ・Apache(HTTPD2.2.6 + Openssl0.9.8e)  ・MySQL(5.0.45)  ・PHP(5.2.4)  ・PHP(4.4.7)  ・phpMyAdmin(2.11.1)  ・Zend Optimizer

    • ベストアンサー
    • PHP
  • formで送信したPOSTデータの削除について

    いつもお世話になっております。 PHPでカートを作っております。カートに入れるボタンを押した際に、どのボタンを押したかを識別する為に、POSTで識別データを送信しております。 このPOSTデータが含まれている場合にカートに入れる動作が実行される様に設定しておりますが、POSTで送信すると、ブラウザの更新ボタンを押すたびにカートに同じ商品が追加されていってしまいます。 ですので、カートに入れる動作が終了した時点で、このPOSTのデータを無効にしたいのですが、PHPのunset関数を実行しても、ブラウザの更新を押した時点で、再度POSTを送信してしまうので、やはり重複登録されてしまいます。 このPOSTのデータを無効にする方法があれば、是非お教え頂けると助かります。

    • ベストアンサー
    • PHP

専門家に質問してみよう