サーバによっては、PukiWikiがそのまま正常に動作しないことがある。その現象としては主に以下の通り。
この主な原因は、以下の2つ。
ファイルオーナーを chown で Webサーバ (apache) 変更すると更新が成功するようになる、という現象が確認できるサーバは suEXEC が原因と思って間違いない。
なぜなら、現に私がそうだったから!
これを解決するには、PukiWiki を CGI で動かすという方法がある。
まず、サーバに CGI版PHP がインストールされているかどうかが重要。 これがないとどうしようもない。
suEXEC というものが私はよくわかっていないのだけど、 どうもこいつは、Webサーバの実行権限をユーザとして扱うプログラムのようで、 Webサーバが作ったり更新したりするファイルのオーナーは、 全てユーザになってしまうらしい。
つまり、“Webサーバはユーザである”と思い込むということ。
…であるクセに、Webサーバ自体は相変わらずWebサーバとして扱われ、 Webサーバがそのファイルをいじろうとすると、 「おまいのファイルじゃねぇyp!」と怒るわけで、わけわからん。
公式サポートページによると、ファイルやフォルダのパーミッションの設定を、 次のように設定しなおすようにとある。
フォルダ
ファイル
これは、グループの全ての権限を奪えということか。
そして、PHPで直接動く場合は *.php ファイルの実行権限は読み取りのみで良いのだけど、CGIで動かす場合は実行権限を与えなければならない。 つまり、 *.cgi などにそうするように 755 を設定する。ただ、suEXEC 対応で、この場合もやはり 705 となるか。
あと、同ページによると、pukiwiki.ini.php のスクリプトのパスの設定を明記するように、とあるけど、これを有効にしてもしなくても、私の場合は動いた。
PukiWiki を入れているフォルダの .htaccess に次の記述を追加する。
RemoveType .php AddHandler cgi-script .php
以上で、とりあえずCGI版が稼動するようになる。