#contents

*1.5.0にバージョンアップする [#d36f12df]

PukiWikiを1.5.0にバージョンアップした時に気が付いたことを備忘録として書き留めておきます。

PukiWikiを1.5.0にバージョンアップにするには、単純にファイルを上書きしたり、パッチをあてたりすればよいだけですが、自作プラグインを使っていたり、改造して使っていたりする場合は、それらも修正が必要です。

なお1.4.7からの変更点は、PHP5.4以降への対応ということしかないようですので、それ以下のPHPを使い続けるのであれば、バージョンアップは必要ないでしょう。ただし、1.5.0でもPHP7には対応していません。

詳しい説明は、「[[PukiWiki/Download/1.5.0 - PukiWiki-official>https://pukiwiki.osdn.jp/?PukiWiki/Download/1.5.0]]」にあります。

私が調べた限りでは、1.5.0へのバージョンアップに必要な修正は、具体的には以下のようなものです。

**htmlspecialcharsをhtmlscにする [#h6285128]

PHPのhtmlspecialchars関数の動作がPHP5.4から変更された(3番目のパラメータencodingのデフォルト値が変更された)ため、EUC-JP版では、htmlspecialcharsを使用した個所が真っ白になってしまう可能性があります(詳細は、「[[PHP: htmlspecialchars - Manual>http://php.net/manual/ja/function.htmlspecialchars.php]]」)。これを修正するために、1.5.0では「htmlsc」という関数がfunc.phpに追加され、htmlspecialcharsの代わりにこのhtmlscを呼び出すようにします。

つまり、手っ取り早い方法としては、func.phpにあるhtmlsc関数内で呼び出しているhtmlspecialchars以外のすべてのhtmlspecialcharsを、htmlscに置換します。

または、PHP5.6.0からはencodingパラメータのデフォルト値がdefault_charsetになったため、ini_set関数を使ってdefault_charsetの値をCONTENT_CHARSETに設定してもよいかもしれません。

#code(php){{
ini_set('default_charset', CONTENT_CHARSET);
}}

**引数についている&を削除する [#gef0a72a]

PHP5.4からは、関数を呼び出す時、引数にリファレンス記号(&)が付いているとエラーが出るようになったようです(詳細は、「[[PHP: リファレンス渡し - Manual>http://php.net/manual/ja/language.references.pass.php]]」)。よって、引数に付いている邪魔な&は削除する必要があります。

array_walkが使用されてる箇所にはこの問題がありますので、「array_walk」を探します。そしてこれをforeachを使うように修正します。例えばls2というプラグインでは次のような修正が行われています。これを参考にして、修正します。

#code(php){{
function plugin_ls2_convert()
{
//	途中省略

//	array_walk($args, 'plugin_ls2_check_arg', & $params);
	foreach ($args as $arg)
		plugin_ls2_check_arg($arg, $params);

//	途中省略
}

//途中省略

//function plugin_ls2_check_arg($value, $key, & $params)
function plugin_ls2_check_arg($value, & $params)
//以下省略
}}

array_walk以外にも修正が必要な個所があるかもしれません。例えば、「(?<!function\s(&\s)?)\y\c+\([^)]*&」のような正規表現パターンでGREPすれば、探せるかもしれません。

**hex2binをpkwk_hex2binにする [#t86ca12c]

「hex2bin」という関数がPHP5.4から加わったことで、PukiWikiのfunc.phpにあった「hex2bin」が「pkwk_hex2bin」と名前を変えました。よって、すべての「hex2bin」を「pkwk_hex2bin」に置換します。

しかし、そもそもhex2bin関数を直接使用しているプラグインはまずないと思います。

//これより下は編集しないでください
#pageinfo([[:Category/PukiWiki]],2016-02-25 (木) 02:23:21,DOBON!,2016-02-25 (木) 02:23:21,DOBON!)

[ トップ ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]