PukiWiki SETTING

設定の調整とカスタマイズ
========================

概要
    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を複数個用意する方が一般的に簡単
        です。

    定数 PAGE_TITLE
        PAGE_TITLE が設定されている場合、pukiwiki.ini.php の $page_title
       より優先されます。
　　　　コアひとつで複数サイトを利用する際、index.phpの設定だけで
       共通のコア、設定を利用することが可能になります。
       たとえば、設定は同じでデータの保存場所とサイト名だけ違うような場合に便利です。

全体設定 (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のキーワードとして使うことができ
        るように、短くてユニークなものが好ましいでしょう。

        定数 PAGE_TITLE が設定されている場合、pukiwiki.ini.php の $page_title より優先されます。

    変数 $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 を使用している事を宣言するた
        めのタグが出力されます。
            <?xml version="1.0" encoding="EUC-JP" ?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" ...

        一部の Webブラウザ はこの宣言部を識別して動作を切り替えるため、結果
        として意図しない挙動をもたらす事があります。
        例えば以前のバージョンのHTML向けに作成されたCSSをPukiWikiに適用する
        場合、(X)HTMLの宣言部がきっかけとなり、デザインの崩れを引き起こすこ
        とがあります。

        この問題に対する回避索として、管理者は宣言の内容をより古い値に切り
        替える事ができます。

    変数 $nofollow
        この設定を有効にした場合、閲覧される全てのページについて、検索エン
        ジンに内容がキャッシュされる事を 辞退する ためのタグを出力します。
        結果的に、検索エンジンの検索結果に載り辛くなる事が期待できます。

        実際にキャッシュが検索エンジンに保存されるかどうかは、検索エンジン
        側の判断になります。

    定数 PKWK_ALLOW_JAVASCRIPT
        JavaScriptをこのサイトで使用することを許可します。
        現在はJavaScriptのためのタグを表示するか、しないかのみをコントロー
        ルしています。

    変数 $spam
        URI追加型スパムをブロックする機能を有効にします。
        第三者にコンテンツの追加を許可している環境でないならば、この機能を
        利用する必要はありません。

        以下のようなコンテンツの追加が試みられた時、それをスパムとして認識
        します。
            1. 過剰な量のURLが存在する
            2. 同一(とみなす事ができる)URLの過剰な列挙
            3. HTML AnchorタグやBbCodeで修飾されたURLの過剰な列挙
            4. '管理者が指定した条件に合致するホスト' に対するURLが存在する

        スパムとして認識された場合、(通常の)処理はその時点で停止します。
        ($notify を有効にしている時は) その状況や、リモートホストなどの情
        報が管理者にメールで通知されます。

    変数 $nowikiname
        WikiName(WikiWord)に対するハイパーリンク自動生成機構を _無効に_ し
        ます。

        通常は、テキストの中に「大文字で始まる英単語が二つ以上連結した文字
        列("WikiName" ないし "WikiWord" と呼びます)」があった場合、そのペー
        ジに対するハイパーリンクが生成されます。

        例えば UpperCamelCase という単語があると、そこに "UpperCamelCase"
        というページに対するハイパーリンクが装飾されます。そのページがまだ
        存在しない場合には、修飾もそれを示すように変化します。

        この機構は、Wikiユーザーに話題の分割(新しいページの作成または閲覧)
        を促します。しかし、利用方法によってはこの機構が邪魔に思える事があ
        るかもしれません。この設定を有効にする事で、WikiNameに対するハイパ
        ーリンクの生成を止めさせることができます。

    変数 $autolink
        AutoLink と呼んでいる機構、つまり既存のページに対するハイパーリンク
        自動生成機構を _有効に_ します。

        通常は WikiName や、 「[[ と ]] で囲んだ文字列("BrackerName"と呼ん
        でいます)」がテキストにあった場合に、初めてそのページへのハイパー
        リンクが(その場所に)生成されるため、ハイパーリンクを駆使したい場合
        書き手は常にこの仕組みを意識していなければなりません。

        しかし AutoLink が有効であるならば、既存の(ページの)ページ名が自動
        的にハイパーリンクの対象になるため、書いた文書の中に自動的に(もし合
        致するページがあれば)ハイパーリンクが出現します。

        この機構は非常に便利ですが、ページを出力したり、ページを更新する時
        のサーバー負荷を高める原因になります。ユーザーが非常に多いサイト、
        またコンテンツが非常に多いサイトでの利用は推奨しません。

        1. 設定として「AutoLinkの対象とする既存ページ名の最低限の長さ」をバ
          イト数(例えば8)で指定しますが、この値は十分に大きな数であるべきで
          す。例えばこの値が 1であり、"e" という(1バイトの)ページが存在する
          場合、ほとんどの e という文字に、 "e" というページへのハイパーリ
          ンクが修飾されます!

        2. ページ数が増大するにつれ AutoLinkの対象が増えるため、更新時の負
          荷、および出力時の負荷が増大します。

    変数 $autoalias
        AutoAlias と呼んでいる機構、つまり特定の文章に対し、特定のページや
        外部URLへのリンクを装飾する機能を有効にします。

        AutoAliasが有効であれば、変数 $aliaspage に指定されたページに記載した
        リンクの文字列が、書いた文書の中で自動的にハイパーリンクになります。

        ハイパーリンクに変換可能なリンクの数は、変数 $autoalias_max_wordsに
        よって制限されます。リンクの設定数が多くなるとAutoAliasの対象が増える
        ため、ページを出力したり更新する時に、サーバー負荷を高める原因となり
        ます。


設定の修正: 管理者パスワード
    PukiWikiの管理者パスワードは、pukiwiki.ini.php にある変数 $adminpass
    です。簡単に試すだけであるならば、以下のような内容で充分でしょう。

        $adminpass = 'YourPassWord';
        ('YourPassWord' の部分を、何らかの言葉で置き換えて下さい)

    何らかの方法で pukiwiki.ini.php を閲覧できる者にパスワードを知られない
    ようにするために、8種類の方法でパスワードを保存することができます。
    これらの新しい保存形式は md5 プラグインで生成する事ができます。
    (詳細:BugTrack/709)

    推奨されるのは(十分にランダムなsaltが与えられた)SSHAか(同)SMD5です。
    (SSHAは環境により使用できないことがあります)

        $adminpass = '{SSHA}I3cHSs6Ypgyq+UnMtcPkmxfXMnwdfyj35DFS';
        $adminpass = '{SMD5}6OsAW7lc2pLc6LSUpyH0o8dffasdfyj35DFS';

    ※PukiWiki 1.4.5 以前 のバージョンのパスワード文字列を使用する場合、そ
      の文字列の前に '{x-php-md5}' という語句を追加する必要があります

        $adminpass = '{x-php-md5}7e65a61d08ab4aa7e54c55f92eafaa33';


スキンの変更または調整
    スキン(外見の骨組み)に関する設定項目は skin/スキン名.skin.php の先頭にあ
    ります。

    付属のtDiaryスキンに切り替える事によって、tDiary用のテーマを使用する事が
    できます。詳しくは [[pukiwiki.dev:BugTrack/769]] を参照して下さい。
 
    その他、ユーザーが作成した独自のスキンについては
    [[official:自作スキン]] を参照して下さい。
    http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%82%B9%E3%82%AD%E3%83%B3


デザインの調整
    必要に応じて、さらに設定やデザインを調整して下さい。

    ※デフォルトのスキンの場合、CSSは skin/スキン名.css.php が出力します。こ
      れは目的に応じたCSSを出力することのできる、単独のPHPスクリプトです。
      これを静的なファイルにしたい場合は、Webブラウザで出力結果を取り出して
      下さい。どのようなCSSが求められているかはスキンに記述されています。
