PHPセーフモードが有効だと、何らかの対策をしないとDokuWikiがまともに動作しない可能性が高い。典型的エラーとして、/data/cache内のディレクトリにあるファイルの読み書きに失敗したりする。 これは、
という風に所有者が異なり、mkdir()など一部の関数が制限を受けるため。
PHPセーフモードが無効だと、同じサーバにある他人が作ったディレクトリ内に対して様々な事が出来てしまう可能性が出てくるため、通常は有効になっている。
DokuWikiのsafemodehackを有効にするとFTPでディレクトリを作成するようになり、スクリプトの所有者とディレクトリの所有者が「あなた自身」で一致するため、セーフモードに関わるトラブルをおおむね回避出来るようになる。
まず、所有者がapacheになっているディレクトリがあったら、所有者をFTPユーザーに変更するか削除する。
管理ボタン→サイト設定をクリック。
また、safemodehackを行うと、PHPスクリプトの所有者(あなた自身)とディレクトリの所有者(あなた自身)が一致する代わりに、PHPスクリプトの動作ユーザー(apache)とディレクトリの所有者(あなた自身)が違ってくる。
よって、apacheがディレクトリ内のファイルの作成・消去・読み書きを出来るよう、管理ボタン→サイト設定→フォルダ生成マスクを0777などに変更する。
新たに作られるディレクトリは、所有者があなた自身でパーミッション777などになる。新たに作られるファイルは、所有者がapacheでパーミッション644になる。
xrea+は、.htaccessファイルに以下の「AddHandler application…」という1行を書き足すだけでPHPをCGIモードのように動かす事が出来、セーフモード関連の問題をある程度回避出来る。
ただ、最初はその1行だけで対策していたのですごく簡単に感じたけど、挙動不審な箇所を直していくにつれ、簡単とは言えなくなってきた。とは言え、こっちの方法なら番号の古いxreaサーバでPHP5が使えるなどの特長がある。
.htaccessファイルと、いくつかのPHPファイルを修正する。
まず、ルートにある.htaccessに以下を付け足す。
AddHandler application/x-httpd-php5cgi .php <Files ~ "^(doku|feed|css|fetch)\.php$"> AddHandler cgi-script .php </Files>
BatchEditプラグインなどPHP5専用のプラグインがある事もあわせ、PHP5で動かす方がよい。
なお、AddHandler application/x-httpd-php5cgi .phpだけでセーフモード対策すると、各PHPスクリプトのヘッダ出力を無視してヘッダがtext/htmlで固定されるため、
といった問題が起こる。
さらに、以下のファイルを修正する。
なお、AddHandler application/x-httpd-php5cgi .phpを使わずこれらのファイルだけでセーフモード対策をすると、突然管理画面に入れなくなるなどの問題が起こる。
ある程度まともに動くようになったら、大まかな設定をしていく。DokuWikiの設定へ。