ともやん どっと ねっと


2012年5月20日(日) 21:12 JST

DokuWiki

Plugin

geeklogのDokuWiki Plugin

管理者用のサイト設定

使用言語: ja で日本語化されない場合は、/dokuwiki/conf/local.protected.phpにて追加設定を行う。
local.protected.php$conf['lang'] = 'ja'; を追加

<?php
/**
 * DokuWiki - Geeklog Integration Plugin
 *
 * This file holds configuration information specific to the
 * integration of DokuWiki with Geeklog.
 *
 * You will need to change the require_once() line below to
 * point to your Geeklog lib-common.php file.
 *
 * No other changes should be made to this protected file.
 */
 
//~省略~
$conf['lang'] = 'ja';
 
/* --- Do not change anything below this line --- */
//~省略~
?>

セーフモード対策の設定(モジュール版で動作する場合のみ)

XREAにてDokuWikiを使用する場合は、サーバのPHPがセーフモードで動作しているため、DokuWikiに対してセーフモード対策の設定が必要である。
DokuWikiの管理者用のサイト設定を開いて以下の図の部分を設定する。

セットアップエラー対応

ログイン時に定期的に以下のエラーが出力される場合の対処方法を記載する。

DokuWiki Setup Error
The datadir ('pages') does not exist, isn't accessible or writable.
You should check your config and permission settings.
Or maybe you want to run the installer?

このエラーは以下のプログラムが出力している。

inc\init.php function nice_die($msg)
/**
 * print a nice message even if no styles are loaded yet.
 */
function nice_die($msg){
  echo<<<EOT
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
  <html>
    <head><title>DokuWiki Setup Error</title></head>
    <body style="font-family: Arial, sans-serif">
      <div style="width:60%; margin: auto; background-color: #fcc;
                  border: 1px solid #faa; padding: 0.5em 1em;">
      <h1 style="font-size: 120%">DokuWiki Setup Error</h1>
      <p>$msg</p>
      </div>
    </body>
  </html>
EOT;
  exit;
}

つまり、DokuWiki Setup Errorはページタイトルで、「The datadir ('pages')〜」が$msg本体なので、$msg変数の内容でフォルダ をGrep検索する。
そして、メッセージを出力している以下のメソッドを見つけ出す。

inc\init.php function init_paths()
/**
 * Checks paths from config file
 */
function init_paths(){
  global $conf;
 
  $paths = array('datadir'   => 'pages',
                 'olddir'    => 'attic',
                 'mediadir'  => 'media',
                 'metadir'   => 'meta',
                 'cachedir'  => 'cache',
                 'indexdir'  => 'index',
                 'lockdir'   => 'locks',
                 'tmpdir'    => 'tmp');
 
  foreach($paths as $c => $p){
    if(empty($conf[$c]))  $conf[$c] = $conf['savedir'].'/'.$p;
    $conf[$c]             = init_path($conf[$c]);
    if(empty($conf[$c]))  nice_die("The $c ('$p') does not exist, isn't accessible or writable.
                               You should check your config and permission settings.
                               Or maybe you want to <a href=\"install.php\">run the
                               installer</a>?");
  }
 
  // path to old changelog only needed for upgrading
  $conf['changelog_old'] = init_path((isset($conf['changelog']))?($conf['changelog']):($conf['savedir'].'/changes.log'));
  if ($conf['changelog_old']=='') { unset($conf['changelog_old']); }
  // hardcoded changelog because it is now a cache that lives in meta
  $conf['changelog'] = $conf['metadir'].'/_dokuwiki.changes';
}

さらに、このメソッドは以下のinit_pathメソッドによってチェックを行っている。

inc\init.php function init_path($path)
/**
 * Returns absolute path
 *
 * This tries the given path first, then checks in DOKU_INC.
 * Check for accessability on directories as well.
 *
 * @author Andreas Gohr <andi@splitbrain.org>
 */
function init_path($path){
  // check existance
  $p = fullpath($path);
  if(!@file_exists($p)){
    $p = fullpath(DOKU_INC.$path);
    if(!@file_exists($p)){
      return '';
    }
  }
 
  // check writability
  if(!@is_writable($p)){
    return '';
  }
 
  // check accessability (execute bit) for directories
  if(@is_dir($p) && !@file_exists("$p/.")){
    return '';
  }
 
  return $p;
}
ようこそ: Guest (Guest)
linux/dokuwiki.txt · 最終更新: 2011/03/22 11:13 (外部編集)
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Noncommercial-Share Alike 3.0 Unported