DokuWikiフォーラムからこれをクロスポストします:
そこで、ページ名の大文字化、サイドバーのToCでの自然な大文字と小文字の並べ替え、大文字と小文字を区別しない検索の3つを可能にするためにいくつかの変更を加えていました。
これはファイルのアクセス許可エラーのように見えるので、我慢してください。私はそうは思わない。
「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」という名前のページはありませんし、これまでにありませんでした。検索が完了すると、検索したものと同じコンテンツ(nul、NuL、nUlなど)を含む新しい行が\ dokuwiki \ data \ index\page.idxに追加されます。その行が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に書き込まれます。
投稿の冒頭で述べた3つのことを達成するために行った変更は次のとおりです。
/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から毎晩スナップショットをインストールしましたが、エラーが解決しません。
誰かアイデアはありますか?