차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

dokuwiki [2015/12/04 08:40] (현재)
raychani 만듦
줄 1: 줄 1:
 +====== dokuwiki ======
 +**dokuwiki**는 위키시스템 중 하나이다.
  
 +{{tag>​서버}}
 +
 +===== 문제 해결 =====
 +
 +각 페이지에 대응하는 파일 이름을 url 인코딩 방식을 이용한다. 안정적이지만 파일이름이 쓸데없이 길어지기 때문에 경로 길이 제한으로 인한 오류가 발생하기도 한다.
 +
 +safe를 이용하면 안전하고 간결하게 데이터를 저장하지만 리눅스 콘솔에서 파일 이름을 확인하기 어렵기 때문에 utf-8을 사용하는 것이 더 편하다.
 +
 +처음 설치 때부터 바꾸면 별 문제 없지만 사용하던 중간에 바꾸려면 옵션만 바꾸는 것이 아니라 실제 파일의 이름을 전부 바꾸어야 한다.
 +
 +다음은 파일 이름을 url 인코딩에서 utf-8로 변환해 주는 코드((https://​www.dokuwiki.org/​tips:​convert_to_utf8))이다.
 +
 +  * 다음 파일을 dokuwiki/​data/​pages 디렉토리에 넣고
 +  * 다음 명령을 /data/pages 에서 실행한다.
 +    * {NEW}는 적당한 경로로 바꾸어 준다.
 +      * ~/​pages_backup 라던가
 +      * :!:기존 pages와는 다른 위치에 해야 한다.
 +    * for wikipage in `find . -type f -name "​*.txt"​` ; do php urldecode.php $wikipage {NEW} ; done
 +
 +:!: 단 이 방법을 이용하면 모든 파일의 편집 시간이 현재 시간으로 바뀌어 버린다. 마지막 편집자 정보도 바뀔 수 있다.
 +
 +
 +<code php 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);​
 +</​code>​