交叉张贴从DokuWiki forums这样的:奇特的搜索错误DokuWiki中
所以,我做了一些修改,以允许三两件事:在页面名称资本,自然情况下,在侧边栏的ToC排序和案例不敏感的搜索。
忍受我,因为我知道这看起来像一个文件权限错误。我不相信。
在搜索“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”还没有曾经存在于维基上,正在被搜索时被写入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:我取代 “排序” 与 “natcasesort”
natcasesort($files);
natcasesort($dirs);
据我所知,这些都是微小的变化,我没有看到任何立即显而易见的事情会导致此问题。
任何想法?
更新 -
我恢复了我的所有更改,错误仍然存在。
然后我在一个完全独立的目录中安装了一个新的DokuWiki(Release 2010-11-07a“Anteater”),错误依然存在。
然后我安装了splitbrain.org的夜间快照,错误依然存在。
任何人有任何想法?
事实证明,这是一个Windows特定的错误是由于 “NUL” 被保留。我在我的原始问题链接的论坛帖子中发布了一个修复程序。 – 2011-04-13 19:30:56
您应该将其作为答案发布,并将其标记为已接受 - 这是一个令人愉快的边缘案例。 – Charles 2011-04-14 03:31:26
它不会让我接受我自己的答案另外两天,但我已经发布了它! – 2011-04-14 05:22:04