ディレクトリ構成を変えたとき、requireのチェックがカレントディレクトリだけなのは制限がきつい。
しげ:メモ/PukiWikiコンフィギュレーションに書いてるんですが、標準の構成じゃないとき、requireのチェックがカレントディレクトリだけでなくrequireしているファイルのカレントディレクトリもチェックしてほしいです。
というか、requireの前でチェックするより、requireの解釈にまかせてエラーハンドラで処理した方がスマートかもしれません。
pukiwiki.php の最初に
define('PUKIWIKI_DIR', './');
というのを追加し、require で他のソースを読み込んだり、スキンや画像ファイル等を読んだりしている所に、片っ端から PUKIWIKI_DIR を付けました。例えば、pukiwiki.php のみをサーバーのトップディレクトリ / に置き、他のファイルは /pukiwiki/ の下に置きたい場合、
define('PUKIWIKI_DIR', './pukiwiki/');
とすれば大丈夫なはずです。
スキンやプラグインなど、変更点は多岐にわたります。まだ、忘れているところがあるかもしれません。適用は慎重に。自作のプラグイン等があり、ファイルを参照している場合は、その変更も忘れずに。
// Webサーバーの外部には必要最小限のファイルのみ露出する htdocs/index.html <= 案内でも何でも htdocs/foo.php <= PukiWikiの入り口 htdocs/bar.php <= 別のPukiWikiへの入り口 htdocs/images/ <= 共有データ htdocs/skin/ (*.css, *.js) <= 共有データ htdocs/hoge/index.php <= さらに別のPukiWikiへの入り口 htdocs/hoge/images/ <= 専用のデータ htdocs/hoge/skin/ (*.css, *.js) <= 専用のデータ // SUB_DIR: 複数のWikiで同じライブラリを共有(してもよい) pukiwiki/*.php (func, make_link, ...) pukiwiki/skin/*.skin.*.php // SUB_DIR: PukiWikiのグループごとに別のライブラリを共有(してもよい) pukiwiki_test/*.php (func, make_link, ...) pukiwiki_test/skin/*.skin.*.php // DATA_HOME for foo.php data/foo/*.ini.php data/foo/*.lng data/foo/wiki/ data/foo/diff/ data/foo/backup/ data/foo/cache/ data/foo/trackback/ data/foo/plugin/ // DATA_HOME for bar.php data/bar/(略) // DATA_HOME for hoge.php data/hoge/(略)