Pukiwiki

| | コメント(0) | トラックバック(0)

自民党キター と喜んでいる最中ですが,はまっていた事があったの備忘録をかねてのメモ.
# 選挙ネタはそのうちかければ.

PHP の Wiki である Pukiwiki ですが,PHP 5.0.5 にあげたとたん,次の様なエラーを出力して使えなくなってしまった.

----- エラー ここから -----
Fatal error: Only variables can be passed by reference in /home00/seichan.org/data/public_html/wiki.bak/rules.ini.php on line 35
----- エラー ここまで -----

原因は,PHP のセキュリティ向上の為の修正によるもので,array() で定義された配列定数を return する場合、返り値を変数にいれずに直接使用すると定数値にアクセスしたこととなり致命的エラーとなるもの.

と言う訳で,QuickHack してみる.
変更したファイルは,rules.ini.phpplugin/recent.inc.phpplugin/counter.inc.php の3つだが,他にも同様な変更が必要かも知れない.
その際は,コメント欄にコメントをくれれば嬉しいかも.

で,変更点を明確にする為に,diff 形式をそのまま乗せます.ここで使用している Pukiwiki のバージョンは,1.4.5_1 です.

----- rules.ini.php ここから -----
%diff -u rules.ini.php.bak rules.ini.php
--- rules.ini.php.bak Mon Sep 12 00:32:01 2005
+++ rules.ini.php Mon Sep 12 00:20:50 2005
@@ -17,6 +17,10 @@
/////////////////////////////////////////////////
// ユーザ定義ルール(直接ソースを置換)

+$page = $vars['page'];
+$page = explode('/', $page);
+$page = array_pop($page);
+
$str_rules = array(
'now\?' => format_date(UTIME),
'date\?' => get_date($date_format),
@@ -24,7 +28,8 @@
'&now;' => format_date(UTIME),
'&date;' => get_date($date_format),
'&time;' => get_date($time_format),
- '&page;' => array_pop(explode('/', $vars['page'])),
+// '&page;' => array_pop(explode('/', $vars['page'])),
+ '&page;' => $page,
'&fpage;' => $vars['page'],
'&t;' => "\t",
);
----- rules.ini.php ここまで -----

----- plugin/recent.inc.php ここから -----
%diff -u recent.inc.php.bak recent.inc.php
--- recent.inc.php.bak Mon Sep 12 00:34:24 2005
+++ recent.inc.php Mon Sep 12 00:21:10 2005
@@ -33,7 +33,9 @@
}

// 先頭のN件(行)を取り出す
- $lines = array_splice(file(PLUGIN_RECENT_CACHE), 0, $recent_lines);
+// $lines = array_splice(file(PLUGIN_RECENT_CACHE), 0, $recent_lines);
+ $fdata = file(PLUGIN_RECENT_CACHE);
+ $lines = array_splice($fdata, 0, $recent_lines);

$date = $items = '';
foreach ($lines as $line) {
----- plugin/recent.inc.php ここまで -----

----- plugin/counter.inc.php ここから -----
%diff -u counter.inc.php.bak counter.inc.php
--- counter.inc.php.bak Mon Sep 12 00:36:13 2005
+++ counter.inc.php Mon Sep 12 00:30:23 2005
@@ -14,7 +14,9 @@
{
global $vars;

- $arg = strtolower(array_shift(func_get_args()));
+// $arg = strtolower(array_shift(func_get_args()));
+ $fdata = func_get_args();
+ $arg = strtolower(array_shift($fdata));
switch ($arg) {
case '' : $arg = 'total'; /*FALLTHROUGH*/
case 'total': /*FALLTHROUGH*/
----- plugin/counter.inc.php ここまで -----

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: Pukiwiki

このブログ記事に対するトラックバックURL: http://www.seichan.org/MT/mt-tb.cgi/49

コメントする

このブログ記事について

このページは、seichanが2005年9月12日 00:26に書いたブログ記事です。

ひとつ前のブログ記事は「HDD が飛んだー」です。

次のブログ記事は「業務連絡」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.23-ja