こんにちは。umoriguと申します。いつもPukiWikiを利用させていただいております。 標準状態でPHP 5.4, 5.5 上で動作するリリース*1を提案します。
業務でPukiWikiを利用している立場では、スパム対策などの今後予定されている新機能はそれほど必要ではありませんが、 PHP 5.4 への対応は喫緊の課題になっています。 日本中でPukiWikiの5.4対応を待ち望まれている方は多いと考え、この提案を行っています。
CVS HEAD (Main branch) からリリース済み 1.4.7_notb へ、一部変更のバックポートを行うアプローチをとりました。
現在の PukiWiki 最新リリースである 1.4.7_notb は、標準状態で PHP 5.4 で動作しません。 BugTrack2/349 において既に議論されてる通り、以下の3点の変更を行うことでPHP5.4に対応できます。
ここで、2006年6月以降の pukiwiki CVS Main branch への 452 commitをすべて調査・解析しました。 (BugTrack2/353/Appendix に解析結果を示します。)
この結果、リリース済みの 1.4.7_notb に対して以下の変更のみを適用することで、(b)(c)を解決し、PHP 5.4 上で動作することがわかりました。
Commit ID | Date | Author | Log message | |
440 | 429ae9e | 2011-01-26 00:01:01 | henoheno | htmlsc(): Just sugar for htmlspecialchars(), and a foundation |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/429ae9efab6d8d5e224f56ecf668126d2ce632df |
Commit ID | Date | Author | Log message | |
25 | 70a7d4c | 2006-08-06 22:17:31 | henoheno | BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off 'Warning: Cal |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/70a7d4cf1d3b69e216b85e8e1f88916e84874987 | ||||
56 | ea1c908 | 2006-10-03 22:33:36 | henoheno | BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off 'Warning: Cal |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/ea1c908cc851ac15f1bd6874760434e6a9e339ce | ||||
57 | 249cd0d | 2006-10-03 23:16:31 | henoheno | A little cleanup: * Remove unused variable * Use intval() to say why it's safe w |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/249cd0dfa66426b1e2c49f89dc16cf59f94800b8 | ||||
74 | 6446c63 | 2006-10-28 23:35:42 | henoheno | Warning: Call-time pass-by-reference has been deprecated |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/6446c637da17cdd0407240ca21fdcba9fb5b2655 | ||||
128 | f03df94 | 2007-02-10 15:21:53 | henoheno | Warning: Call-time pass-by-reference has been deprecated |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/f03df9417161e4e0feb2a0b93d9b4e54ba687c59 |
CVS版において変更がされていない(a)については、hex2bin 関数のリネームを行う必要があります。
実際に 1.4.7_notb 時点のソース(タグ: r1_4_7_notb) に対して上記の変更のみを取り込んだものを、以下(外部リンク: sourceforge.jp 内)に置きました。ブランチ名 branch_r1_5 としています。
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits?branch=branch_r1_5
※ブランチ名は変更できますので、大きな意味はありません。
Commit ID | Commit Date | Log message | 説明 | |
1 | bbfe5cf | 2006-06-12 00:35:54 | This commit was manufactured by cvs2svn to create tag 'r1_4_7_notb'. | r1_4_7_notb のタグを表す |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/bbfe5cf82d48ca5dadfb5884314b8b24a56c3d02 | ||||
2 | c954cdf | 2014-06-02 05:50:11 | Rename 'hex2bin' to 'pkwk_hex2bin' because of PHP 5.4+ compatibility | hex2bin を pkwk_hex2bin にリネーム -- (a')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/c954cdf4b7987b663180558b380dd792e9852799 | ||||
3 | e23ccc3 | 2014-06-02 05:57:45 | htmlsc(): Just sugar for htmlspecialchars(), and a foundation | 429ae9e の変更を適用 -- (b')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e23ccc3b3b1095360e5555a547471bfc303e49cc | ||||
4 | e72eb89 | 2014-06-02 06:01:07 | Replace 'htmlspecialchars' by 'htmlsc' | 429ae9e で対応しきれなかったもの(CVS版ではロジックの変更により存在していない部分など)に対する htmlsc 置換 -- (b')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e72eb8997265134c2ecc95173e2570d99e7cbcee | ||||
5 | e607ffc | 2014-06-02 06:04:09 | BugTrack2/343: Use ENT_COMPAT at htmlspecialchars | BugTrack2/343 への対応。1.4.7 との互換性を維持し、1.4.7からの変更を最小にするため、CVS版とは異なるアプローチ(ENT_COMPATの利用)を行った -- (b')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e607ffc613ca96889719a12bbc7b24548858909d | ||||
6 | 88fb8d6 | 2014-06-02 06:08:37 | BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off | 70a7d4c の変更を適用 -- (c')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/88fb8d60d0b5914fc8ba2c26a4d71b9cfd5ee77f | ||||
7 | 9342619 | 2014-06-02 06:13:12 | BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off | 429ae9e の変更を適用 -- (c')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/9342619eb24468640fd8c9fad540ca5c96f1c79f | ||||
8 | 7300ab9 | 2014-06-02 06:20:29 | A little cleanup: | 249cd0d の変更を適用 -- (c')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/7300ab9e8a0931e6e5742152b7e6cc5adc98b59a | ||||
9 | e95e519 | 2014-06-02 06:28:39 | Warning: Call-time pass-by-reference has been deprecated | f03df94 の変更を適用 -- (c')の対応 |
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e95e5191051c389c6f64d0cafcef31a896a62dba |
PukiWiki CVS版の変更は非常に注意深く行われており(関連の変更のみによって各コミットが構成されており、 無関係な変更が含まれていない)、変更点の抽出および1.4.7リリース版への適用は比較的容易に行うことができました。 このような運用を行われている開発者の方々に感謝します。
提案の変更を適用したソースコードはgitがインストール済みの場合、
$ git clone -b branch_r1_5 git://git.pf.sourceforge.jp/gitroot/u/um/umorigu/pukiwiki15.git
とすることで取得できます。
これが最終版というわけではなく、実際のリリースに向けてはリリース番号などの変更が必要であろうと考えています。 一方、1.4.7_notb からの変更点の説明は最小限ですむと考えています。
またこの変更自体に致命的なバグが存在することも考えられます。 指摘があれば際は速やかに修正する用意があります。
CVS版にそのまま適用するため、変更点をまとめた patch ファイルを作成しました。 以下の場所からダウンロードできます。
sourceforge.jp/users/umorigu/pf/pukiwiki15/files/ - paches ディレクトリ
Patch file | Note | Commit | |
1 | pw15.1.hex2bin.patch | hex2bin リネーム | c954cdf |
2 | pw15.2.htmlsc.patch | htmlsc 利用 | e23ccc3, e72eb89, e607ffc |
3 | pw15.3.passbyrefcall.patch | Call-time pass by reference 削除 | 88fb8d6, 9342619, 7300ab9, e95e519 |
4 | pw15.4.r15.patch | バージョンを 1.5.0 に | 8bb75c8 |
PHP5.4, 5.5対応版については、1.5.0として、バージョン番号を変更するのが妥当と考えます。 ただし、1.5.xについては、branch_r1_6 からのバックポートを含む、バグ修正などの メンテナンスリリースという位置づけです。
スパム対策など、現在 CVS Main branch (および branch_r1_4_7) に追加された新機能は 重要なもので、PukiWikiの価値をさらに高めるものになると考えます。 これらは、引き続き branch_r1_6 のようなブランチで開発を続け、 完成したところで将来の version 1.6 または version 2.0 としてリリースすることを提案します。 これらは当初予想されていたよりもはるかに大きく重要な機能であり、完成すれば単体でメジャーバージョンをつけるに値する価値のあるものであると認識しています。