PukiWiki SETTING $Id: SETTING.txt,v 1.20 2007/02/28 15:56:50 henoheno Exp $ 設定の調整とカスタマイズ ======================== 概要 PukiWikiの設定は、管理者がPHPスクリプトを編集する事によって行います。 通常は以下に示す代表的なファイルの中に設定を行います。 PukiWikiのパッケージに含まれているPHPスクリプトは(あれば、基本的に)EUC- JPで、また改行コードLFで記述されています。(UTF-8版の場合は全てUTF-8/LF で記述されています) スクリプトを直接編集する場合は、文字コードと改行コードを判別でき、それを 維持できるテキストエディタを使用して下さい。文字コードや改行コードを破壊 するエディタを使用した場合、ファイルが正しく読み取れなくなったり、意図し ない結果を引き起こしたり、修正前のファイルとの差分を抽出する事が困難に なります。 設定は主に以下のファイルに対して行います。 実行開始地点 : index.php 全体設定 : pukiwiki.ini.php ユーザ定義 : rules.ini.php ユーザーエージェントのグループ(profile)ごとにも設定が用意されています。 デスクトップPC : default.ini.php 携帯電話およびPDA : keitai.ini.php メッセージの多くは言語ごとにまとめられています。 英語(en)向け : en.lng.php 日本語(ja)向け : ja.lng.php スキン(デザイン部分)独自の設定項目は skin/<スキン名称>.skin.php の先頭 にあります。 プラグイン独自の設定項目は plugin/<プラグイン名称>.inc.php の先頭にあり ます。 設定を「有効にする」とは多くの場合、設定値を数字の 0 でない値(例えば1) にする事です。一部の設定は名前に DISABLE ないし $noXXX とありますが、そ れらは値を 0 でないものにすることによって、その設定値に対応する機能が無 効になります。(無効にする、という役割が有効になります) PHP言語について 詳しくはPHPマニュアルを参照して下さい。 http://jp.php.net/manual/ja/ PukiWikiの設定項目は、基本的に '定数' と '変数' によって表現されていま す。 正規表現について PHP言語は、Perl 5互換の正規表現をサポートしています。 http://jp.php.net/manual/ja/reference.pcre.pattern.syntax.php PukiWikiの設定項目のいくつかは、"あるパターンに一致する(任意の)文字列" を表現するために正規表現を利用しています。 実行開始地点 (index.php) このファイルにWebブラウザ経由でアクセスする事により、PukiWiki が実行さ れます。 ファイル名が 'index.php' である必要はありませんが、多くのWebサーバーは ファイル名を省略された時に index.php を参照するように設定されています。 今回用意するWikiが、そのディレクトリにとって主要なコンテンツであるなら ば、このままで不都合はないでしょう。 いくつかの設定項目は、このファイル中で事前に指定する事ができます。 例えばメンテナンスの間だけ PKWK_READONLY を有効にするにより、編集を禁止 する事ができます。 また、このファイルをコピーして異なる名称で複数個用意し、それぞれ設定の 内容を変えておくことで、設定の使い分けが可能になります。 例えば、全てのページに編集認証をかけた上、index.php では PKWK_READONLY を有効に、secret.php では PKWK_READONLY を 無効に する事によって、限ら れたメンバーだけ編集できる環境を構築する事ができます。 このファイルの中に加えられる代表的な設定項目は以下の通りです。 error_reporting() 関数 これはPHP言語で用意されている、出力するエラーの種類を制御する関数で す。特にPHP言語レベルの障害切り分けを行いたい場合、 error_reporting(E_ALL); と記述する事により、通常は表示されないPHPのエラーを表示させる事がで きます。 設定項目(定数)の事前定義 以下に挙げる設定項目は、このファイルで事前に定義する事ができます。 PKWK_READONLY PKWK_SAFE_MODE PKWK_OPTIMISE PKWK_DISABLE_INLINE_IMAGE_FROM_URI PKWK_QUERY_STRING_MAX TDIARY_THEME PHP言語では定数の値を後から変更する事ができないため、管理者はここで 設定した内容を確実に強制する事ができます。 個々の項目の詳細は pukiwiki.ini.php の説明を参照して下さい。 ディレクトリ設定 この値を調整する事により、異なる場所にあるPukiWiki本体を呼び出す事 ができます。例えば、PukiWiki本体をWebブラウザからアクセスできない場 所に設置し、Webブラウザからアクセスできる場所には実行開始地点だけを 用意する事ができます。 (Webブラウザから参照される画像ファイル、css、JavaScriptなどについて はWebブラウザからアクセスできる場所に置く必要があります) LIB_DIR PukiWikiが利用する関数がまとめられているファイルが設置されてい る場所をサーバー内の絶対パス、または相対パスでで指定します。 DATA_HOME 一本のPukiWikiに関する独自の部分(設定項目、採用しているプラグイ ン等)を格納する場所をサーバー内の絶対パス、または相対パスでで指 定します。 複数のPukiWikiが同じLIB_DIRを共有し、異なるDATA_HOMEにデータを保存 することも可能です。しかしPukiWikiを複数個用意する方が一般的に簡単 です。 全体設定 (pukiwiki.ini.php) このファイルに主だった設定を記述します。項目の多くはグローバル変数、そ れ以外は定数です。多くの設定は、デフォルトの値が設定されています。管理 者は環境に応じて設定を調整して下さい。 このファイルの中に存在する代表的な設定項目は以下の通りです。 定数 PKWK_OPTIMISE 本来不要な(過剰な、冗長な、アクセスが集中する時に動作させたくない) チェックや挙動を積極的に停止します。PukiWikiがその環境で問題なく動 作する事を、管理者が確認した後に有効にする事ができます。 定数 PKWK_READONLY PukiWikiを編集不可能な状態にします。メンテナンスをしている間ユーザ ーの編集を止めたい時、緊急ロックを行いたい時、ミラーサイトを構築す る時、閲覧専用の環境としてPukiWikiを使用したい時、そのPukiWikiの運 営を終了する時に使用できます。(詳細:BugTrack/744) PKWK_READONLY が有効であると、編集に関するユーザーインターフェース は表示されなくなり、編集に関する内部の機構(関数)は動作しなくなりま す。 入力フォームを出力するプラグインは、テキスト入力フィールドやボタン などを表示しなくなります(commentプラグインのコメント欄など)。管理者 パスワードに対する認証行為は(仮にあったとしても)必ず判定に失敗する ようになります。 この機能によってファイル書き込みが完全に停止するわけではありません 。例えばアクセス数やダウンロード数をカウントする機構(それぞれcounte rプラグイン、attachプラグイン)は、この設定の影響を受けません。 また、この設定を尊重しない(第三者が作成した)プラグインなどには効果 がありません。 定数 PKWK_SAFE_MODE PukiWikiをインターネット上に公開する場合、この設定を有効にして下さ い。もはや利用されていない機能、その他安全とは思われない機能が無効 になります。(詳細:BugTrack/787) 定数 PKWK_DISABLE_INLINE_IMAGE_FROM_URI '画像ファイルへのURL' であるかのように見えるURLについて、そのURLを (画像であるかのように)imgタグのソースとして用いる機能を停止します。 この機能は画像をインラインイメージとしてページに埋め込むための簡便 な方法として用意されているものですが、その一方で、広告を目的とした 画像の掲示を行うために悪用されたり、閲覧者の情報を自動的に送信する CGIへのURL(ただしURLは画像へのURLのように見える)を設置される可能性 が生じます。 定数 PKWK_QUERY_STRING_MAX PukiWiki にアクセスできるクエリ文字列(PukiWikiにアクセスしたときのU RLのうち、'?' 以降の部分)の長さの限界値を定義することができます。こ の値を超える長さのアクセスがあった場合、それ以降の処理を行いません。 この設定は明らかに異常なアクセスを、なるべく早い時点で区別するため のフィルタとして働きます。 この設定が十分に大きくない場合、(attachプラグインのように)クエリ文 字列が長くなる可能性のあるプラグインの動作が遮断される可能性があり ます。 定数 PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK <<これは実験的な実装であり、より適切な実装へ(互換性のない形で)変更さ れるか、不適切な実装として存在しなくなる可能性があります>> この設定を 無効 にし、これに対応する専用の記法でテキストを書くこと により、複数行のデータを受け付けるブロックプラグインが動作するよう になります。(詳細:BugTrack2/84) (PukiWiki 1.4.7) 複数行のデータがある領域が、他のプラグインによって 干渉を受けるという設計上の問題があります。例えば領域内に #memo プラ グインを設置したかのように見える文字列があるとき、#memoプラグインが その行を破壊することがあります。 定数 LANG PukiWikiがサーバー内に保存する言語を大まかに指定します。ここではen, jaといったISO 639の言語コードで表現されていますが、この値は、この後 に続く設定を簡単に切り替えるためのスイッチとしての役割しかありませ ん。 定数 UI_LANG PukiWikiがユーザーに提示するユーザーインターフェース部分の言語を大 まかに指定します。ルールは LANG と同じです。 この設定は、'テキストデータとしては様々な言語を入力したいが、ユーザ ーインターフェースは英語に揃えたい" といった要望を実現するためのも のです。 '<ここで指定したキーワード>.lng.php' というファイルの中に保存されて いるメッセージが、ユーザーに提示されることが想定されています。 定数 ディレクトリ設定 DATA_DIR, DIFF_DIR, BACKUP_DIR, CACHE_DIR, UPLOAD_DIR, COUNTER_DIR, PLUGIN_DIR ここで指定されているディレクトリは、PukiWiki(PHPスクリプト)が必要 に応じてアクセスする場所です。 DATA_DIR, DIFF_DIR, BACKUP_DIR, CACHE_DIR, COUNTER_DIR には、PukiW ikiが書き込み権限を持っている必要があります。 UPLOAD_DIR には、ファイル添付の機構(attachプラグイン)を利用しない のであれば書き込み権限は必要ありません。 上に挙げた以外のディレクトリ(LIB_DIR や、 PLUGIN_DIR も含む)に対し ては、PukiWiki は書き込み権限を必要としません。(セキュリティ上の理 由により、書き込み権限を与えてはいけません) 定数 SKIN_DIR この定数は現在二つの意味を持っています。 1. PukiWikiが、PHPスクリプトとして 'スキン' ファイルを探すべき場所 'スキン' ファイルはPukiWikiが(PHPのレベルで)アクセスするため、 Webサーバーから見える場所に配置する必要はありません。 2. Webブラウザが、cssなどを探すべき場所 cssファイルなどは、ユーザーが(Webブラウザから)アクセスするため Webサーバーから見える場所になければいけません。 PukiWiki本体をWebサーバーから見えない場所に設置した場合、SKIN_DIRで 定義しているディレクトリをWebブラウザから見える場所にも用意し、そこ にcssファイルを設置する必要があります。 定数 IMAGE_DIR PukiWikiから参照される、アイコンやシンボルマークなどの画像が配置さ れたディレクトリの場所を指定します。このディレクトリとその内容は、 Webブラウザからアクセスできる場所になければいけません。 定数 ZONE, ZONETIME PukiWikiを設置しているサーバーが属する 'タイムゾーン' (時差が同じで あるとされている地域の大まかな呼び名)、およびGMT(ないしUTC)との時差 を設定します。 変数 $page_title 今回設置するサイトの名称を(あれば)設定します。 ここで指定した文字列は、PukiWiki が出力するXHTMLのtitleタグなどに用 いられます。結果的に、そのPukiWikiの目的や、それが何であるのか、ど のようなコンセプトがあるのか、といった情報の一部をユーザーに伝達し ます。 InterWikiを活用したい場合、InterWikiのキーワードとして使うことができ るように、短くてユニークなものが好ましいでしょう。 変数 $script PukiWiki が設置されているURL(どのURLにWebブラウザはアクセスするべき か)を設定します。通常は自動的に検出できるため、設定する必要がありま せん。 この値の後ろにさらにURLを連結することにより、プラグインにアクセスす るためのURLが生成されるため、URLの末尾はスラッシュ一つ '/' であるか 実行開始地点のファイル名(例: 'index.php') である必要があります。 例: http://example.org/index.php 変数 $script_directory_index この設定は、URLの末尾に特定のファイル名があったとき、それを自動的に 取り除くことにより、URLが常にシンプルになるよう整えるために使用しま す。Webサーバーの設定に依存するため、デフォルトでは無効になっていま す。 PHPが動作する多くのWebサーバーでは、URLとして 'ディレクトリ' を指定 したとき、実際には 'index.php' にアクセスするよう設定されています。 この場合、ファイル名を指定しないURLが、有効なURLの中では最もシンプ ルになります。 例: http://example.org/path/to/your/pkwk/ このような時でも、自動的に $script の値が取得された場合、PukiWikiは ファイル名入りのURLを表示します。 例: http://example.org/path/to/your/pkwk/index.php この状況を好ましく思わない場合、$script_directory_index に 'index.p hp' という値を設定すると、末尾が 'index.php' であるファイルへのアク セスに対しては、PukiWikiは常に簡潔なURLを表示するようになります。 例: http://example.org/path/to/your/pkwk/ 変数 $modifier このPukiWikiの管理者が誰であるのかをユーザーに通知します。 変数 $modifierlink ユーザーが、このPukiWikiの管理者へ連絡を取るためのURLを設定します。 変数 $defaultpage 閲覧したいページをユーザーが特に指定しなかった時に表示する、入り口 のページを名前で指定します。Wikiの実装によっては 'WelcomeVisitors' がデフォルトの値として用いられています。 このページが存在しなかった時は、強制的に作成されます。 このページに最も多くのユーザーが訪れるため、ごく一般的な説明や、初 めてそのWikiに訪れるユーザーのためのメッセージや、最も多く参照され るべきコンテンツ(や、それへのリンク)を含めることができます。 同じ理由で、このページはSpamのターゲットになりやすいため、通常はこ のページを "凍結" する事を推奨します。(#commentプラグインの代わりに #pcommentプラグインを使用して下さい) 変数 $whatsnew このページは、PukiWiki が自動的に更新します。 ページが更新(新規作成、修正)された時、ここで指定されたページに、ど のページが更新されたのかが記録されます。 変数 $whatsdeleted このページは、PukiWiki が自動的に更新します。 既存のページを誰かが削除したとき、ここで指定されたページに、どのペ ージが削除されたのかが記録されます。同時に、このページが更新された 事が $whatsnew に記録され、他のユーザーに告知されます。 (結果的に、誰かがページを削除した場合、それは他のユーザーにも告知さ れます) 変数 $interwiki このページは、PukiWikiが自動的に読み込みます。 このページが存在しなかった時は、強制的に作成されます。 InterWiki の設定を書くためのページを指定します。 期待されている(専用の)記法で書かれていない文字列は無視されます。そ のため、必要に応じて説明を記入することができます。 変数 $aliaspage このページは、PukiWikiが自動的に読み込みます。 AutoAlias の設定を書くためのページを指定します。 期待されている(専用の)記法で書かれていない文字列は無視されます。そ のため、必要に応じて説明を記入することができます。 変数 $menubar ページを閲覧しているとき、デフォルトのデザインでは左側に表示するメ ニューの中身を保存しているページを指定します。 このページは、PukiWikiが自動的に読み込みます。 このページに記述した内容は、それぞれのページを閲覧している時に常に 表示されます。 そのサイトに初めて訪れたユーザー向けのページ(このサイトが何のために 存在するのか、用語説明など)や、第三者的な視点で見て利用頻度が高いと 思われるページや、関連する他のサイトのURLやなどをリンクとして常に掲 示することができます。 変数 $pkwk_dtd この設定は通常使用されません。設定されていない場合、デフォルトの値 (XHTML 1.1)が使用されます。 PukiWiki は通常 XHTML 1.1 に "おおむね" 沿ったHTML(XHTML)を出力しま す。また、出力の一行目には、XHTML 1.1 を使用している事を宣言するた めのタグが出力されます。