dokuwiki

dokuwiki는 위키시스템 중 하나이다.

각 페이지에 대응하는 파일 이름을 url 인코딩 방식을 이용한다. 안정적이지만 파일이름이 쓸데없이 길어지기 때문에 경로 길이 제한으로 인한 오류가 발생하기도 한다.

safe를 이용하면 안전하고 간결하게 데이터를 저장하지만 리눅스 콘솔에서 파일 이름을 확인하기 어렵기 때문에 utf-8을 사용하는 것이 더 편하다.

처음 설치 때부터 바꾸면 별 문제 없지만 사용하던 중간에 바꾸려면 옵션만 바꾸는 것이 아니라 실제 파일의 이름을 전부 바꾸어야 한다.

다음은 파일 이름을 url 인코딩에서 utf-8로 변환해 주는 코드1)이다.

  • 다음 파일을 dokuwiki/data/pages 디렉토리에 넣고
  • 다음 명령을 /data/pages 에서 실행한다.
    • {NEW}는 적당한 경로로 바꾸어 준다.
      • ~/pages_backup 라던가
      • :!:기존 pages와는 다른 위치에 해야 한다.
    • for wikipage in `find . -type f -name “*.txt”` ; do php urldecode.php $wikipage {NEW} ; done

:!: 단 이 방법을 이용하면 모든 파일의 편집 시간이 현재 시간으로 바뀌어 버린다. 마지막 편집자 정보도 바뀔 수 있다.

urldecode.php
<?php
 
$mode = 0775;  // permissions to use for directory creation
 
$src = $argv[1];
$dst = $argv[2].'/'.urldecode($argv[1]);
 
$path = dirname($dst);
if (!file_exists($path)) {
#    echo "mkdir -p $path\n";
    mkdir($path,$mode,true);
}
 
#echo "cp $src $dst \n";
copy($src,$dst);

댓글을 입력하세요. 위키 문법이 허용됩니다:
F A S T D