質問箱/4505

カテゴリ
サマリdefault.ini.phpの読み込まれるタイミングについて
バージョン1.4.7
投稿者
状態完了
投稿日2009-09-27 (日) 10:00:06

質問

ちょっと基本的なことでご教示いただきたいことがあります。 PukiWikiのDATA_HOMEにあるdefault.ini.phpはどのタイミングで、どのような仕組みで読み込まれるのでしょうか? DATA_HOMEのディレクトリを下位ディレクトリも含めてgrep検索しましたが、include文やrequire文で読み込まれている場所を見つけることが出来ませんでした。 よろしくお願いします。

回答

  • dev サイトのどこかに解説があったような気もするけど、まあいっか。複数Wiki を設置するために設定を変更したい(質問箱/3456 など)とか、入り口によって設定を切り替えたい(質問箱/2339 など)とか、default or keitai に応じて設定を切り替えたい(質問箱/4273 など)という場合に、理解しておく必要がありますしね。 -- 2009-09-27 (日) 15:14:05
    1. まず入り口(index.php)となるファイルが呼び出されます。そこからLIB_DIR に設定されているディレクトリにあるpukiwiki.php が呼び出されます。
    2. 次に、呼び出されたpukiwiki.php から、LIB_DIR にあるシステムファイル(func.php, file.php など)に該当するものが読み込まれます。(「// Include subroutines」とコメントが書かれている部分)
    3. システムファイルが読み込まれた後、初期設定をするためにLIB_DIR にあるinit.php を呼び出します。(「// Load *.ini.php files and init PukiWiki」とコメントが書かれている部分)
      1. init.php で初期設定をしていく過程で、DATA_HOME に設定されているディレクトリにあるpukiwiki.ini.php を呼び出します。(「// Require INI_FILE」 )
      2. ここまでで読み込まれた設定、LANGUI_LANG を基に言語関連の設定と言語ファイル(ja.lng.php など)の呼び出しを行います。(「// INI_FILE: LANG に基づくエンコーディング設定」~「// LANG_FILE: Init severn days of the week」の辺り)
      3. $agents に登録されているルール(pukiwiki.ini.php の最後で設定されています)を使って、UserAgent を解析してどのUA_PROFILE を呼び出すかを決定、DATA_HOME にあるそのファイル(default.ini.php など)を呼び出します。(「// INI_FILE: $agents: UserAgentの識別」~「// Profile-related init and setting」の辺り)
    4. 残りの初期設定が終わってpukiwiki.php に戻ってきたところで、必要に応じて残りのシステムファイル(例えば、メール送信が有効になっている場合はLIB_DIR のmail.php が呼び出される、など)を呼び出します。(「// Load optional libraries」とコメントが書かれている部分)
    5. 実行処理が開始されます。(例えば、閲覧時ならread プラグインが呼び出されます。「// Main 」とコメントが書かれている部分以降)
    • 見つけられなかった理由は、
      require(LIB_DIR . 'func.php');
      みたいに単純なロジックではなく、UA_PROFILE に応じて呼び出しファイルが変えられるように、
      define('UA_INI_FILE', DATA_HOME . UA_PROFILE . '.ini.php');
      と定義して、UA_INI_FILE の値の位置にファイルが存在するかを確認した後で、
      	require(UA_INI_FILE); // Also manually
      呼び出すように書かれているせいでしょう。 -- 2009-09-27 (日) 15:18:35
  • たいへん解りやすく有用な回答をありがとうございます。iii-aまでとiv以降は何とか解読出来るのですが、独学浅学の身ではiii-b,iii-cの部分が難解でどうしても理解できず、とても define('UA_INI_FILE', DATA_HOME . UA_PROFILE . '.ini.php'); など気がつきませんでした。このような端的でわかり易いガイドを頂いたので、もう一度じっくりこの部分を精読してみたいと思います。ありがとうございました。 -- 2009-09-27 (日) 20:12:44

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-10-03 (土) 11:58:35
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.224 sec.

OSDN