2011-04-13 3 views
2

크로스 포스팅 DokuWiki forums에서이 :독특한 검색 오류

그래서,이 세 가지를 허용하기 위해 약간의 수정을했다 : 사이드 바의 목차에 정렬 페이지 이름에 대문자, 자연 케이스, 케이스 무신경 검색.

내게 곰이있어, 파일 사용 권한 오류처럼 보입니다. 나는 그것이라고 믿지 않는다.

"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 

라는 이름의 페이지가 없었다되지 않고 않는다 " 고 말했다. 검색이 완료되면 \ dokuwiki \ data \ index \ page.idx에 검색 한 내용과 동일한 내용 (nul, NuL, nUl 등)이 추가됩니다. 그 선이 page.idx에 추가되면, U "또는"L ","n "은 문자에 대한 모든 검색"도 오류가 발생합니다 :

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)는 : I "는 natcasesort"

natcasesort($files); 
natcasesort($dirs); 
으로 "정렬"대체

이것들은 모두 내가 말할 수있는 한 사소한 변화이며,이 문제를 일으킬만한 것이 즉시 보이지 않습니다.

아이디어가 있으십니까?

업데이트 -

내 모든 변경을 복귀하고 오류가 지속.

그런 다음 완전히 다른 디렉토리에 새로운 DokuWiki (릴리스 2010-11-07a "Anteater")를 설치했지만 오류가 계속 발생합니다.

그런 다음 splitbrain.org에서 야간 스냅 샷을 설치 했는데도 오류가 지속됩니다.

누구든지 아이디어가 있습니까?

+0

그것은이 소유하고 때문에 "NUL"에 Windows 특정 오류 인 것으로 나타났다. 내 원래 질문에 링크 된 포럼 게시물에 수정 사항을 게시했습니다. –

+0

답변으로 게시하고 승인 된 것으로 표시해야합니다. 이는 매우 기쁜 사례입니다. – Charles

+0

다른 2 일 동안 내 대답을 받아들이지 않겠지 만 게시했습니다! –

답변

0

"NUL"이 (가) 예약되어있어 Windows 관련 오류입니다. Per Charles의 제안에 따라, 원래의 의견에 링크 된 포럼 게시물뿐만 아니라 여기에 답변을 게시 할 것입니다. kludgey 수정 프로그램 인 것처럼 느껴지지만 제대로 작동해야했습니다. ASCII 문자에 "nul"이라는 단어를 다시 쓰고 페이지 및 제목에 표시하기 위해 다시 번역합니다.

\ inc \ pageutils.PHP, 라인 137 (틱) :

if(strtolower($id) == 'nul') { 
    for($i=0;$i != strlen($id);$i++) { 
     $stupidWindowsFix .= "&#".ord($id[$i]).";"; 
    } 
    $id = $stupidWindowsFix; 
} 

\ INC \ template.php, 라인 876 :

$name = html_entity_decode($id);