PHP5で動作しない†
- ページ: BugTrack
- 投稿者: henoheno
- 優先順位: 重要
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2004-07-15 (木) 20:24:04
- バージョン: 1.4のみ
関連: PHP5関連BugTrackのまとめ†
メッセージ†
- スラッシュドットにて、「クラスの使い方がおかしいため(PHP4では、うごいちゃってた)オブジェクト指向周りを書き換えたPHP5では動かない」との指摘あり
- 本当におかしい部分があるのなら、PukiWiki 1.5 などと言わず、改善対象とすべきです。改善のためのご意見求む(このページにて) :) -- henoheno
- PHP4で動くことを前提としたPHP5対応なら、同感です。-- upk
- 御意。私は今初期化周りを重点的に見ているので、pcommentのバグやPHP5対応については手が回りません。こちらの件については、「ここはPHP(4)のOOPではこうあるべき」というご指摘があれば検証させていただきます。よろしくお願いします。 -- henoheno
関連情報†
- スラッシュドット ジャパン | PHP5がリリース
- Zend Engine II (PHP5で採用している)
現状のステータス: 完了†
(PukiWiki 1.4.4_php5, PukiWiki 1.4.5_1)
- 特別版として PukiWiki 1.4.4_php5 をリリースしました。PukiWiki 1.4.4 にPHP5対応を加えたものです。 (branch_r1_4_4_php5がベースになっています) -- henoheno (開発日記/2004-10-18)
1.4に関する成果はtrunkにマージされました。今後はCVS版を「PHP4/PHP5の両方に対応」しているものとして扱って下さい。 -- henoheno 2004-09-19 (日) 23:17:04
もう諸兄は実施されていると思いますが、ぱんださんがブランチを切ってPHP5対応の作業を始められているので、興味のある冒険者は branch_r1_4_4_php5 ブランチを追ってください -- henoheno
For 1.4.x: convert.htmlのパースエラーについて†
Fatal error: Cannot re-assign $this in /path/to/pukiwiki_14/convert_html.php on line 108
- pukiwiki:続・質問箱/80にてTさんが紹介されていたパッチ(を適用前後のファイルから再作成したもの)が手元に残っています。convert_html.php,v 1.57との差分です。(
convert_html.php.diff)このパッチあてconvert_html.phpに差し替えることにより、CVS版PukiWiki1.4.3とPHP5.0.0にてとりあえず動作しています。 -- bebebe
- ありがとうございます。拝見しました。あまり自信はありませんが、オブジェクトの生成をする部分をFactoryに任せるという事ですね? CVS版にはそのままではパッチが当たらないということもあり、取り掛かるのであれば、(現象を調べた後に)少しづつ検証しながら再実装するのが良かろうかと思っています。 -- henoheno
- PHP5の環境を用意しました。まずは最新のCVS版にて、上記のエラーメッセージ、を確認しました。 -- henoheno
- http://dev.angelicwing.net/archives/10_PHP5__Pukiwiki.html のコメントにあるように、$this->classとなおすとPHP5では動作するようです。反対にPHP4ではだめかもしれません。ただし、同様にcommentプラグインでは名前が表示されません。 -- 白石
- この BugTrackがでるまえに実験的にわたしのサイトで $this->class に修正してみたことがあるのですが、 #contents が動作しなくなって元に戻した経緯があります。(ちなみに、PHPは4.3.8です。) -- みこ
- Here is a patch against 1.4.4-rc1-cvs that will work a bit like henoheno-san's, you only need to comment/uncomment two statements to get things working right in PHP4 (where there is a 'clone' token). It does not use static methods as I'm not sure how these work in PHP4 : http://hatsukoi.ff.st/meromero/pukiwiki-1.4.4-rc1-php5-compat.patch.gz (usage: change dir to DATA_DIR and type: patch --verbose --dry-run -u -p1 < pukiwiki-1.4.4-rc1-php5-compat.patch) -- Rasqual
- Rasqualさんので#commentも働くようになったみたいですが,参照の箇所にdaggerという文字列が出るのが直りません -- 奥村
- えっと・・・実はまちがえた。CLは「patch --verbose -u -p1 < pukiwiki-1.4.4-rc1-php5-compat.patch」 (--dry-runなし, option for testing purposes) commentやpcommentのフォーマットは ?x08MSG?x08 -- ?x08NAME?x08?n?x08NOW?x08 にしてください。 It allows the plugins to function, but I have no idea why they stop working in PHP5. -- Rasqual
- そうか,改行をはさめば逃げられるんですね -- 奥村
- 自分のサイトで動かしているパッチをRasqualさんのパッチにマージしてみました。試してみてください。
php5-compat.diff cloneを使っていないので、PHP4でもそのまま動くはずです。 -- ぱんだ
- 今朝のスナップショットでやってみたらMenuBarが増殖してしまいました -- 奥村
- すいません,最初になかったプラグインマニュアルが何かしているうちにたくさんできて,しかも最初にクリックしたものがエラーになったので,誤動作だと思ってしまいました。今やってみたらエラーにならないのもありますね。しかしpとかは必ずエラーになるみたいです -- 奥村
- なるほど。こちらでも再現しました。ApacheがSEGFAULTで落ちますね。 ;( パッチを差し替えましたので、お手数ですが
php5-compat.diffでもう一度試してみてください。 -- ぱんだ
- Factory_Inline()内の「行頭~で…」の中で、いらんことをしていた部分を削除しました。 -- ぱんだ
- 見た目の変化(異常)などについては、スクリーンショットの一部や、その縮小したものを張った方が伝わり易いかもしれません -- henoheno
- 申し訳ありませんでした。今度はpでもエラーにならないことを確認しました -- 奥村
- 1.4.3に比べて重い(HTML convert timeが長い)のですがなぜなんでしょう。ちなみにHTML conversion time: ... secのほうがいいのかな(toを削除) -- 奥村
- http://oku.edu.mie-u.ac.jp/~okumura/pukiwiki/ が 1.4.3 で http://oku.edu.mie-u.ac.jp/~okumura/test/pukiwiki/ がまったく同内容をコピーした 1.4.4rc1 です(後者はそのうち消えます)。何度かやって平均をとると 1.4.3 のほうが倍近く速いみたいです。いずれもPHP5.0.1です -- 奥村
- Patch v.2: http://hatsukoi.ff.st/meromero/pukiwiki-1.4.4-rc1-php5-compat-v2.patch.gz - 「comment.inc.php」の編集はもう必要ない。なお、このパッチはstatic Inline_Converter objectの"clone"を使うので、実行は早いの方かもしれない。奥村さん、can you confirm if it's faster using "new InlineConverter"? I'm afraid executing the constructor multiple times has some overhead, but I don't have evidence to back it up. -- Rasqual
- Thanks, Rasqual, I confirmed the new patch was significantly faster, nearly as fast as 1.4.3 patched. -- 奥村
- cloneでやるならこんな感じかと。
php5-compat.diff -- ぱんだ
- Rasqual氏のパッチは*1インラインプラグインのネスト*2を無効にしていますが、そんなことしなくても __clone() あたりで $converters[] を適切にクローンすればうまく行きますよ。 -- ぱんだ
- ぱんださんのパッチもためしてみました。こちらはやや遅いようです. -- 奥村
- 会社のPHPのバージョンがあがったせいで動作しなくなって大変弱っています。大変かとは思いますが、迅速な正規の対応を宜しくお願い致します。 -- うらお
- とりあえず上のパッチで動いていますがCVS版に取り込まれればありがたいですね -- 奥村
=> 下記「CVSリポジトリへのマージについて」に続く
雑談: TeX Wikiの立ち上げ†
- おかげさまで TeX Wiki が完成しましたが、Safariで書き込むとEUC-JPでは文字化けするので utf-8 にしようと思い変換したところ http://oku.edu.mie-u.ac.jp/~okumura/texwiki-utf8/ のように † が † に化けるなど微妙におかしくなってしまいました。 -- 奥村
- 実体参照が変換できていませんね。cache/entities.datが存在するかどうか、存在する場合は変換前と変換後で内容が変わっていないかどうかを確認してください。 --
- ついでに、lib/plugin.phpのencode_hint("ぷ"の字)*3が化けていないかどうかも。 --
- 図星です。cache/entities.datを補充したら直りました。lib/plugin.phpのほうはそもそも変換されていなかったのでEUC-JPのままの「ぷ」でした。utf-8にしてみましたが特に変わりはないようです。 -- 奥村
- 「ぷ」もutf-8化した状態で TeX Wiki を再出発しました。どうもありがとうございます -- 奥村
- 本家CVSもそのうちutf-8化していただければありがたいのですが -- 奥村
- リリーススクリプトとnkfを組み合わせてutf-8版のパッケージを生成することであれば考えています。UTF-8版のPukiWikiが欲しい、というニーズの大部分はそれで吸収できるからです。リポジトリの中身を utf-8 にすると開発環境に多々不都合が出る事が見えてきているので、もう私は考えていません :) 奥村先生のニーズも(CVSリポジトリをどうこうすることではなくて)PukiWikiをutf-8に変換するための手軽な何かが欲しい、ということではないですか? CVS版をにらみながら、UTF-8で維持しているPukiWikiのメンテが簡単にできるような :) -- henoheno
- はい、utf-8 についてはそれで十分です。要望ばかりですみません / 実はさらに問題があって、Win9x の人からは utf-8 になって読めなくなったという苦情が出ています。例えば .../?FrontPage を .../euc.php?FrontPage にすると euc-jp になるようなことはできるでしょうか -- 奥村
- といっているうちに自分でソースを読んだほうが早かったですね。^^; まだ不完全ですがやってみました -- 奥村
CVSリポジトリへのマージについて†
- 以下、ぱんださんに自分の見解を述べる、という雰囲気で気楽に書きます :) -- henoheno
- CVS版にマージする手順について。第三者による監査が行われ易い様に、三段階に分けたマージを期待しています。すなわち [1]PHP4のOOP的におかしいらしい(?)点があれば、その修正 [2]PHP5で動かすために、どうしてもPHP4では動かないコードを混ぜねばならない場合、その切り替えロジックの追加 [3]PHP4では動かない、PHP5に依存したコードの追加 です。このいずれの最終段階でも、PHP4で動作する事を希望します。最も幸せなケースは[1]の作業だけで無事にPHP5で動作する様になること。次に幸せなケースは、一旦[3]まで進んだ後、最終的に[1]の状態に至る事と考えます。 -- henoheno
- CVS上で作業する環境について。今回の作業はコアな部分をいじりますので、こちらの無関係な作業とコンフリクトしない様にブランチを切った方が良いと思います。そして最後に、あるいは上記段階ごとにtrunkとマージする様にします。ぱんださんが作業しやすいなら、こちらで用意しますし、ぱんださんがブランチを切られても構いません。私が想定しているブランチポイントタグは r1_4_4_rc2 とか r1_4_4 (もう少しお待ちを) とか pkwk14_2004-09-xx_php5、ブランチタグは branch_r1_4_4_rc2_php5 とか branch_r1_4_4_php5 とか branch_pkwk14_2004-09-xx_php5 です。長い (^^; -- henoheno
- 釈迦に説法かと思いましたが、こんなところです。CVS版に取り込む要望が多くなっているので書いてみました ;) -- henoheno
- 了解です。branch_r1_4_4_rc2_php5で行きましょうか。 -- ぱんだ
- うぐ、9/4の午前中に branch_r1_4_4_php5 という名前でブランチを切られてしまいましたか (^^; その時のターゲットは当時の r1_4_4 だと思うのですが、タグ r1_4_4 はその後何回も移動しているため、結果的に branch_r1_4_4_php5 は名前通りの状況ではなくなってしまっています(午後に追加でコミットした変更はそのブランチに含まれていませんので、1.4.4とは相違が出ます)。今回はあまり影響がないと思いますが、場合によってはマージに不都合(いらぬ手間)が出ます (^^; branch_r1_4_4_php5 に、午後の分をコミットしておきましょうか? -- henoheno
- あ。すみません。updateかけるの忘れてました ;( 。 -- ぱんだ
- branch_r1_4_4_php5タグをr1_4_4タグと同じ位置に移動しておきました。ご確認ください。 -- ぱんだ
- 確認しました :) -- henoheno
- 1.4.5 も出たことですし、このBugTrackは完了としておきます。 -- にぶんのに
branch_r1_4_4_php5 ブランチの話題†
For 1.4.x: comment, pcomment などの挙動の変化について†
- 1.4.3を1.57に差し替えてパッチを当てた所、パースエラーはなくなりましたが、pcommentやcomment等で投稿者名が表示されない(データ上は存在する)状態になっています。おそらくconvert_html.phpがphp5とphp4で動作が微妙に変わっているのではないかと思うのですが・・。 -- 白石
- pukiwiki:続・質問箱/80 で同じく白石さんが報告されていた事象は、このパッチでも起こる、ということですね? 情報ありがとうございます。 -- henoheno
- ご指摘の通り、パッチが悪いというのではなく、別の原因があるかもしれませんね。 -- henoheno
- ところで皆さん、PHP5のプラットフォーム(OS)は何をお使いでしょう? -- henoheno
- 動作OSは、FrdoraCore2です。現在は、&newプラグインと名前の間に改行を入れることで回避をしています。実際に動作しているものは、仕事用の内部的なものなのでお見せできないのですが・・。あと、このパッチではなぜか時々(再現性なく)PHP言語側のパーサエラーをはきます。(Wikiテキストとしてのエラーではなくという意味で)CVS版については、試していません近いうちにテストしてご報告申し上げます。動作としては&newあたりがうまく動いていないようですが・・。 -- 白石
- というか、そんな動きはPHP5が悪いという気もしてきた(苦笑) -- 白石
- 動作報告について検証が甘かったです、すいません。ローカル環境でテストしているのですが、WinXP Home + Apache 2.x + PHP 5.0.0 + PukiWiki 1.4.2 + convert_html.php(1.5.7patched)ではコメントプラグインも動作しています。前述の環境にPukiWiki 1.4.3CVS + convert_html.php(1.5.7patched)では報告されているようなコメントプラグインのおかしい挙動を確認しました。 -- bebebe
For 1.3.x: 問題ありそう(未サポート)†
Fatal error: Call to undefined function preg_split() in /path/to/pukiwiki_13/func.php on line 139
- 1.3の最新のCVS版でも何か出ました。ただし、official:質問箱/294を見るに、これはFAQかも(PHP4のデフォルト設定ではこうならないのですが・・・)
- FreeBSD限定のFAQでした(開発日記/2004-07-23)。パッと見、普通に動いている感じですね。 -- henoheno
- comment, pcommentの挙動については、私はまだ1.4.xの挙動を見ていないので、未確認です。 -- henoheno
- 1.3.xについても、basename()関数やxml_parser_create()関数などの挙動の違いで不都合が出ると思われます。 -- ぱんだ
- 日本語で始まる名前のファイルを添付すると日本語部分が消える attach.inc.php ref.inc.php
- RSSが文字化けする showrss.inc.php