PukiWiki
2016/09/11
2016年12月14日からPHP7.1が使用できるようになったので、この作業をする必要は無くなりました。→さくらのレンタルサーバ PHP7.1 提供開始のお知らせ | さくらインターネット
さくらのレンタルサーバーがなかなかPHP7に対応しないので自力でインストールしてみました。
注意:この方法でPHP7を導入した後は、自身の責任においてセキュリティーアップデート(最新版の再導入)をしてください。
多重include(includeの中でincludeを使う)の深さを制限できる改造版includeを作成しました。
制限を超えると、エラーメッセージ
#include(): Limit exceeded (recursive): ページ名
が表示されます。
// Max depth of recursive include define('PLUGIN_INCLUDE_MAX_DEPTH', 2);
// Max depth of recursive include define('PLUGIN_INCLUDE_MAX_DEPTH', 2); // e.g. // PLUGIN_INCLUDE_MAX_DEPTH=0: no prohibition // PLUGIN_INCLUDE_MAX_DEPTH=1: prohibit recursive include
function plugin_include_convert() { global $script, $vars, $get, $post, $menubar, $_msg_include_restrict; static $included = array(); static $count = 1; static $depth = 1; //追加
if (isset($included[$page])) { return '#include(): Included already: ' . $link . '<br />' . "\n"; } if (! is_page($page)) { return '#include(): No such page: ' . $s_page . '<br />' . "\n"; } if ($count > PLUGIN_INCLUDE_MAX) { return '#include(): Limit exceeded: ' . $link . '<br />' . "\n"; } if ($depth > PLUGIN_INCLUDE_MAX_DEPTH && PLUGIN_INCLUDE_MAX_DEPTH > 0) { //追加 return '#include(): Limit exceeded (recursive): ' . $link . '<br />' . "\n"; //追加 } else { ++$count; }
if (check_readable($page, false, false)) { ++$depth; //追加 $body = convert_html(get_source($page)); --$depth; //追加 } else { $body = str_replace('$1', $page, $_msg_include_restrict); }
ライセンスはGPLv2 or laterです。(PukiWikiと同じ。)
ECO-Wiki (acronia)で使っている改良したPukiWiki bodycacheの改良内容とソースコード(パッチ)。
ECO-Wiki (acronia)で使っているPukiWikiは2015/03/25のスナップショットでしたが、PukiWiki 1.5.1 がリリースされたのでバージョンアップしました。
改造箇所があるのでdiff-patchで適用しましたが、大きな修正が必要な衝突もなく上手く動いているようです。