ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 12 years ago

Closed 12 years ago

#609 closed defect (invalid)

PHP4.4.2の環境で外部RSS取得でPHPがクラッシュする場合がある

Reported by: ogawa Owned by: ogawa
Priority: minor Milestone: OpenPNE2.8beta7
Component: core【OpenPNEコア部分】 Version:
Keywords: Cc:

Description

PHP4.4.2 のバグで、外部URLをfopen()で開くとPHPがクラッシュするというバグがあります。 (http://bugs.php.net/bug.php?id=36017)

PNE_SimplePie::get_file() では Snoopy を使ってこれを回避していましたが、最新版では再びどこかで fopen() をURLに対して使っているようです。

Change History (15)

comment:1 Changed 12 years ago by ogawa

2.6までと同じような対応を取るなら、SimplePie_Fileを別のクラスで差し替えるとかでしょう。

class SimplePie
{
    ....
    var $file_class = 'SimplePie_File'; 
    ....

PNE_SimplePie_File ですかね。

comment:2 Changed 12 years ago by ebihara

Owner: changed from nobody to ebihara

んー。対応します。

comment:3 Changed 12 years ago by ebihara

fopen()が使用されている箇所は、SimplePie_Cache::saveとSimplePie_File::SimplePie_Fileですが、バックトレースを取ってみたところ、両方とも使用されていますね。

このふたつに対してogawaさんのご指摘通りの対応をとりたいと思います。

comment:4 Changed 12 years ago by ebihara

urlに対してfopenを使用しているのは、SimplePie_File::SimplePie_Fileのみですね。

comment:5 Changed 12 years ago by takanashi

http://openpne.jp

とか、スラッシュが無いURLを登録したときに通るようです。

comment:6 Changed 12 years ago by ebihara

fopen()の返り値を$this->fpに代入していたりと、単純にPNE_SimplePie_Fileに問題のSimplePie_Fileを継承させて、SimplePie_File()を修正して……といったような単純な修正ではうまくいきそうにありません。

あとで落ち着いたら対処しますが、とりあえず今は他のバグを片づけることを先決にしたいと思います。

今までの成果物はr2585にまとめてコミットしました。

comment:7 Changed 12 years ago by ebihara

間違えました、r2586です。

comment:8 Changed 12 years ago by ebihara

r2587

修正中とはいえAuto-Discoveryが動作しないというちょっとあり得ない状態のコードのままだったので、その部分だけ元に戻しました。

comment:9 Changed 12 years ago by ebihara

うーん、いろいろ調べてみたんですが、スラッシュが無いURLを登録しようとしたときにも、fopen()(include/simplepie.inc Line:2298)を使用しない、ということがありました。

また、手元の開発環境(PHP 5.2.0-8 + simplepie 1.0beta3)では、はてなブックマークのようにfopen()を通るURLを登録しようとすると、以下のPHPエラーが出てしまいました。このエラーは公式からデモプログラム(http://simplepie.org/downloads/)をダウンロードして動作させてみても確認できました。入力したURLは http://b.hatena.ne.jp/* ですが、どこかのタイミングでこのURLが */ へと変更されてしまっているようです。

Warning: fopen(***/) [function.fopen]: failed to open stream: No such file or directory in /opt/Programming/sns/simplepie/public_html/simplepie.inc on line 2298

なお、公式サイト上で実際に動作しているデモプログラム(http://simplepie.org/demo/)ではエラーは表示されませんでした

引き続き調査しますが、なんだかちょっとややこしいです。

comment:10 Changed 12 years ago by ebihara

PHP 4.4.2でも、はてなブックマークのスラッシュなしURLを登録しようとしたら、Warningエラーが出てしまいました。

comment:11 Changed 12 years ago by ebihara

Owner: changed from ebihara to openpne

んー、ちょっと自分にはどうにもならなさそうです。いったん手放させてください。

comment:12 Changed 12 years ago by ogawa

Owner: changed from openpne to ogawa

comment:13 Changed 12 years ago by ogawa

Status: newassigned

comment:14 Changed 12 years ago by ogawa

Milestone: OpenPNE2.8beta6OpenPNE2.8beta7

beta7 へ持ち越します。

comment:15 Changed 12 years ago by ogawa

Resolution: invalid
Status: assignedclosed

PHP 4.4.2のバグの問題ではなかったので、別チケットを準備します。

Note: See TracTickets for help on using tickets.