PHP 5.4 対応版リリースの提案

  • ページ: BugTrack2
  • 投稿者: umorigu
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: その他
  • 投稿日: 2014-06-02 (月) 07:22:01
  • バージョン: 1.4.7_notb (to 1.5.0 (仮))

PHP5関連

メッセージ

こんにちは。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に対応できます。

  • (a) hex2bin がPHP組み込み関数に追加されたことに伴う Fatal: Cannot redeclare hex2bin() エラー
    • (a') (対応) hex2bin 関数のリネーム
  • (b) htmlspecialchars() の挙動が変更されたことに伴う EUC_JP 版で日本語が表示されない問題
    • (b') (対応) [CVS版で解決済み] $encoding オプションを指定するPukiWiki独自関数 htmlsc への置き換え
  • (c) Call-time pass-by-reference が廃止されたことに伴うエラー
    • (c') (対応) [CVS版で解決済み] Call-time pass-by-reference を使わないようにロジックを変更

ここで、2006年6月以降の pukiwiki CVS Main branch への 452 commitをすべて調査・解析しました。 (BugTrack2/353/Appendix に解析結果を示します。)

この結果、リリース済みの 1.4.7_notb に対して以下の変更のみを適用することで、(b)(c)を解決し、PHP 5.4 上で動作することがわかりました。

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

リポジトリ構成に対する説明:

  • PukiWiki リポジトリはCVSですが、今回の提案を行うため、gitリポジトリに変換しています。(sourceforge.jp の仕組み上、個人リポジトリはgitのみ作成できます)
  • 1.4.7 リリース以降の CVS Main branch への変更をすべて branch_r1_6 としています。
  • 今回提案リリース向けの変更を branch_r1_5 としています。

※ブランチ名は変更できますので、大きな意味はありません。

変更点の説明

Commit IDCommit DateLog message説明
1bbfe5cf2006-06-12 00:35:54This 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
2c954cdf2014-06-02 05:50:11Rename 'hex2bin' to 'pkwk_hex2bin' because of PHP 5.4+ compatibilityhex2bin を pkwk_hex2bin にリネーム -- (a')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/c954cdf4b7987b663180558b380dd792e9852799
3e23ccc32014-06-02 05:57:45htmlsc(): Just sugar for htmlspecialchars(), and a foundation429ae9e の変更を適用 -- (b')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e23ccc3b3b1095360e5555a547471bfc303e49cc
4e72eb892014-06-02 06:01:07Replace 'htmlspecialchars' by 'htmlsc'429ae9e で対応しきれなかったもの(CVS版ではロジックの変更により存在していない部分など)に対する htmlsc 置換 -- (b')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e72eb8997265134c2ecc95173e2570d99e7cbcee
5e607ffc2014-06-02 06:04:09BugTrack2/343: Use ENT_COMPAT at htmlspecialcharsBugTrack2/343 への対応。1.4.7 との互換性を維持し、1.4.7からの変更を最小にするため、CVS版とは異なるアプローチ(ENT_COMPATの利用)を行った -- (b')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/e607ffc613ca96889719a12bbc7b24548858909d
688fb8d62014-06-02 06:08:37BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off70a7d4c の変更を適用 -- (c')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/88fb8d60d0b5914fc8ba2c26a4d71b9cfd5ee77f
793426192014-06-02 06:13:12BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off429ae9e の変更を適用 -- (c')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/9342619eb24468640fd8c9fad540ca5c96f1c79f
87300ab92014-06-02 06:20:29A little cleanup:249cd0d の変更を適用 -- (c')の対応
URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/7300ab9e8a0931e6e5742152b7e6cc5adc98b59a
9e95e5192014-06-02 06:28:39Warning: Call-time pass-by-reference has been deprecatedf03df94 の変更を適用 -- (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

※"git" と "://git" の間のスペースを除いてください。(PukiWiki-dev URL投稿制限のため)

とすることで取得できます。

これが最終版というわけではなく、実際のリリースに向けてはリリース番号などの変更が必要であろうと考えています。 一方、1.4.7_notb からの変更点の説明は最小限ですむと考えています。

またこの変更自体に致命的なバグが存在することも考えられます。 指摘があれば際は速やかに修正する用意があります。

パッチファイル

CVS版にそのまま適用するため、変更点をまとめた patch ファイルを作成しました。 以下の場所からダウンロードできます。

sourceforge.jp/users/umorigu/pf/pukiwiki15/files/ - paches ディレクトリ

Patch fileNoteCommit
1pw15.1.hex2bin.patchhex2bin リネームc954cdf
2pw15.2.htmlsc.patchhtmlsc 利用e23ccc3, e72eb89, e607ffc
3pw15.3.passbyrefcall.patchCall-time pass by reference 削除88fb8d6, 9342619, 7300ab9, e95e519
4pw15.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 としてリリースすることを提案します。 これらは当初予想されていたよりもはるかに大きく重要な機能であり、完成すれば単体でメジャーバージョンをつけるに値する価値のあるものであると認識しています。

まとめ

  • PukiWikiのPHP5.4,5.5対応は非常に望まれていることであり、公式にリリースを行ってほしい。
  • そしてPHP5.4対応はは既に広く使われ、非常に安定している 1.4.7_notb ベースで行うのが望ましい。
  • この対応(CVS HEADからのバックポート)を行った。 sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits?branch=branch_r1_5
  • 現在の CVS Main branch は将来のリリース(v1.6 or v2.0)に向けた開発ブランチとする。

  • PukiWikiが将来も安定して動くような状況になって欲しい・・・・・・。 -- singo? 2014-06-26 (木) 20:52:22
  • 社内の情報共有に使用しています。PHP5.5対応感謝です。 -- 2014-07-10 (木) 13:52:55
  • PHP5.4.29 下で問題なく動作を確認しました。レンタルサーバの PHP5.2 サポートが切られたら他システムに移行するしかないと思っていましたので、助かりました。ありがとうございます。 -- 2014-07-14 (月) 11:56:28
  • (b') の対応を行ったコミット で提示されているURLのリンク先が変?Commit IDが429ae9eなのにリンクの出だしが /88fb8d6 ですし。あと、(c') の対応を行ったコミット にある429ae9e とURLの対応も正しいのかどうかが判らない -- 2014-07-15 (火) 02:01:50
  • Commit ID 429ae9eのリンク先, 変更点 429ae9e のCommit ID が間違ってました。修正しました。ご指摘ありがとうございます -- umorigu 2014-07-15 (火) 02:53:22
  • 開発日記/2014-07-19(1.5.0 リリース - umorigu)にて対応版がリリースされたので、ひとまず完了に -- 2014-09-01 (月) 00:25:39

*1 バージョンは仮に 1.5.0 としています

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-01 (月) 00:25:40
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.278 sec.

OSDN