- ベストアンサー
php4用のモジュールをphp5環境で動かすには?
php4用のモジュールなんですけど、php5環境で動かそうと思うと 下記のエラーが出ます。 Fatal error: Using $this when not in object context ↓の部分でエラーが出ています。 $this->build_params['text_encoding'] = '7bit'; $this->build_params['html_charset'] = 'iso-2022-jp'; $this->build_params['text_charset'] = 'iso-2022-jp'; ソースを貼ってみましたが、どこを変えればよいのでしょうか。。。 http://blog.goo.ne.jp/michimichi_2/e/67b515da0c462aa206dea3de3057f1f0 なにとぞ、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずその結果からは、通信自体は出来ていて、XMLもとりあえずは取得出来てそうですよね。 $xmlをvar_dumpするなりしてちゃんとXMLデータが受信できているかも念のため確認してみたほうが良さそうですね。 尚、xml_parser_createのあたりのXMLパーサなんですが、私は使ったこと無いので実際どの程度精度が良いのかわからないのと、引数とかもよくわからないんですが、そこの部分が正常にひけていないのであれば、 テスト用のコードの正規表現で、XMLを取得している部分と取り替えてみて、値が取得出来るか確認してみてはいかがでしょうか。
その他の回答 (2)
- hogehoge78
- ベストアンサー率80% (433/539)
とりあえず切り分けをしないとダメですね。 下記のところですが、 //分岐 if($result == 1){ if($redirect != ""){ header("location:$redirect"); exit; }else{ //$response1 = "エラー"; echo "error 01"; //header("location:checkout_payment.php?payment_error=epsilon"); exit; } }else{ //$response1 = "エラー"; echo "error 02"; //header("location:checkout_payment.php?payment_error=epsilon"); exit; } } else { //$response1 = "エラー"; echo "error 03"; //header("location:checkout_payment.php?payment_error=epsilon"); exit; } とでも書き換えて、どのエラーで飛ばされることになったかをまずブラウザに表示されたエラー名を見て確認して、 ■error 01 HTTP_Requestで、取得した内容に、リダイレクト用のURLは含まれていない。 ■error 02 HTTP_Requestで、取得した内容の、resultの部分に、「1」という数字が含まれていない、またはそもそもそんなあたいは存在しない。 ■error 03 そもそも、HTTP_Requestでデータを受信出来ていない。 HTTP_Requestで取得する先のHTMLなり、URLなりが仕様変更していないか確認する必要がある。 とかといったところでしょうか。
お礼
丁寧に、ありがとうございます! さっそく頂いたソースでチェックしてみたところ、error 02が 表示されました。 ひとまずここまででよろしいでしょうか?
補足
テスト用のソースを使わせてもらったところ、問題なく稼働いたしました。 こちらなんですが、参考になりますでしょうか。 http://blog.goo.ne.jp/michimichi_2/e/b1747bcb14d8143334b2c4c1d87eeea7
- hogehoge78
- ベストアンサー率80% (433/539)
もし、モジュールがこれだけで、全く修正していない、そのままコピペした、というのであれば、 $this->build_params['text_encoding'] = '7bit'; $this->build_params['html_charset'] = 'iso-2022-jp'; $this->build_params['text_charset'] = 'iso-2022-jp'; これらをコメントアウトすれば動くはずです。 「$this」は、クラスオブジェクト内部から、メンバ変数やメソッドを示すためのものなので、クラス外部では利用できません。 最も、 include('includes/application_top.php'); の中になにが記述されているかわからないので、何のためにあるのかもよくわかりませんが。
お礼
早速のご回答、ありがとうございます! おっしゃる通りにコメントアウトすることでエラーを吐き出さなくなりました。 が、エラーログはないのに最後の分岐部分のURLへ飛ばされてしまいます。 hoge.com/checkout_payment.php?payment_error=epsilon この先、どこを確認すればよいのか分からなくなってしまいました。。。
お礼
ありがとうございます。 あの書き込みの後、データが先方に渡っているのを確認できましたので 正規表現の部分をテストのものと取り替えてみたところ、ばっちり動きました! 本当に感謝感謝です^^