从DokuWiki 论坛交叉发布:
因此,我进行了一些修改以允许三件事:页面名称中的大写、侧边栏 ToC 中的自然大小写排序以及不区分大小写的搜索。
请耐心等待,因为我知道这看起来像是文件权限错误。我不相信它是。
在搜索“nul”及其任何变体(nUl、Nul、nuL 等)时,我收到以下错误消息:
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 365
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 366
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 367
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 368
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 369
Warning: filesize() [function.filesize]: stat failed for C:/Websites/dokuwiki/data/meta/nul.changes in C:\Websites\dokuwiki\inc\changelog.php on line 305
没有也从来没有一个名为“nul”的页面。搜索完成后,它会在 \dokuwiki\data\index\page.idx 中添加一个新行,其内容与我搜索的内容相同(nul、NuL、nUl 等)。将该行添加到 page.idx 后,对字母“n”“u”或“l”的任何搜索也将导致错误:
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 365
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 366
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 367
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 368
Warning: Cannot unset offset in a non-array variable in C:\Websites\dokuwiki\inc\parserutils.php on line 369
Warning: filectime() [function.filectime]: stat failed for C:/Websites/dokuwiki/data/pages/nul.txt in C:\Websites\dokuwiki\inc\parser\metadata.php on line 46
Warning: filemtime() [function.filemtime]: stat failed for C:/Websites/dokuwiki/data/pages/nul.txt in C:\Websites\dokuwiki\inc\parser\metadata.php on line 72
再一次,页面“nul”在 wiki 上从未存在过,并且在搜索时被写入 page.idx。
以下是我为实现我在帖子开头提到的三件事所做的修改:
/inc/fulltext.php,第 255 和 263 行:我将“strpos”替换为“stripos”。
if ($id !== '' && $cleaned !== '') {
foreach ($pages as $p_id => $p_title) {
if ((stripos($in_ns ? $p_id : noNSorNS($p_id), $cleaned) === false) &&
(!$in_title || (stripos($p_title, $id) === false)) ) {
unset($pages[$p_id]);
}
}
}
if (isset($ns)) {
foreach (array_keys($pages) as $p_id) {
if (stripos($p_id, $ns) !== 0) {
unset($pages[$p_id]);
}
}
}
/inc/pageutils.php,删除第 114 行:
//$id = utf8_strtolower($id);
/inc/search.php,第 40 和 41 行:我将“sort”替换为“natcasesort”
natcasesort($files);
natcasesort($dirs);
据我所知,这些都是微小的变化,我看不出有任何明显会导致这个问题的东西。
有任何想法吗?
更新-
我恢复了所有更改,但错误仍然存在。
然后我在一个完全独立的目录中安装了一个新的 DokuWiki(Release 2010-11-07a "Anteater"),错误仍然存在。
然后我从 splitbrain.org 安装了夜间快照,但错误仍然存在。
有人有想法么?