adiary.env.cgi

補助的な設定ファイルです。通常の運用では使用しません。*1

*1 : サンプルファイルからコピーすること自体不要です。このファイルは設置することで実行されるため、処理時間がわずかに増えます。

adiary.env.cgiとは?

その説明をするためにはadiaryの起動プロセスを説明する必要があります。

  1. adiary.cgi等の起動
  2. Base.pmのロード(start_up()の実行)
  3. adiary.env.cgiの実行(存在すれば)
  4. adiary.cgi起動環境(CGI環境)を解析し初期化。
    • この際、CGIやファイルシステムのパスを解析します。
    • 実際のルーチンはBase.pmの「init_tm()」と「init_path()」です。
  5. adiary.conf.cgiの実行。
    • この中でMainにメインシステムをロードします。
  6. Main オブジェクト中の main() を実行します。

この時、4で行われるパスの自動解析ルーチンのおかげで、パス関係は何も設定しなくてもadiaryはきちんと動作しています。

実行環境設定

しかし特殊な(細工された)Webサーバ*2で動作させる際、環境変数が異常であるためにパスの解析に失敗することがあります。

するとパス自動解析に失敗し、リンクがうまく辿れないなどの動作不良が起こります。それを是正するにはadiary.env.cgiをサンプルより生成し適切に設定する必要があります。

# パス自動解析に失敗し、リンクがうまく辿れないときに設定する
#<$Basepath='/path/adiary/'>

# mod_rewriteを使用していない場合(通常は自動判別する)
#<$Mod_rewrite=0>

Basepathにはadiary.cgiの置かれているWeb上のパスを指定します。

例えば、

http://example.com/adiary/adiary.cgi

にあるならば、<$Basepath='/adiary/'>となります。必ず「/」で終えてください。

mod_rewriteは特に設定していなければ(何のことか分からなければ)使用していませんので、<$Mod_rewrite=0>を設定してください。

環境変数での指定(Ver3.10以降)

Basepath および Mod_rewrite は環境変数で設定することもできます。

*2 : 強制的に広告を表示するように設定された無料レンタルサーバ等

タイムゾーンの設定

海外サーバなどで時刻がずれる場合に設定してください。

#<$ENV.TZ="JST-9">

サーバ名の固定

adiaryを設置しているサーバが「reverse proxy」の中に置かれていたり、DMZなどにあるためローカルIPでアクセスすることがある場合に、外向きに表示するサーバ名を固定するために設定します。

#<$Server_url = 'http://blog.abk.nu'>

この設定を行うと、ローカルIP等でのアクセス時にリダイレクトに失敗するので、ローカルアクセスも必要ならば以下も同時に設定してください。

# リダイレクトのURLを絶対URIにしない(RFC違反)
<$Redirect_use_relative_url = 1>

デバッグ設定

adiary実行中に発生したエラーを通常外部には出力しないようになっています。

うまく動かなくなりエラーの情報を知りたい時、プラグイン等を開発する時は以下を設定してエラーメッセージを出力します。

<$Develop=1>
  • この設定のままサーバを公開しないでください。第3者に不要な攻撃手段(サーバ情報)を与えることになります。
  • その他いくつかデバッグ用の設定がありますので、サンプルファイルを参照してください。
  • デバッグ設定は adiary.conf.cgi の最初のほうに記述しても構いません。