**[[質問箱4/505]] [#k5883782]
#author("2018-03-11T20:48:31+09:00;2009-10-03T11:58:35+09:00","","")
**[[質問箱/4505]] [#k5883782]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|default.ini.phpの読み込まれるタイミングについて|
|~バージョン|1.4.7|
|~投稿者||
|~状態|完了|
|~投稿日|&new{2009-09-27 (日) 10:00:06};|
***質問 [#yc005f72]
ちょっと基本的なことでご教示いただきたいことがあります。
PukiWikiのDATA_HOMEにあるdefault.ini.phpはどのタイミングで、どのような仕組みで読み込まれるのでしょうか?
DATA_HOMEのディレクトリを下位ディレクトリも含めてgrep検索しましたが、include文やrequire文で読み込まれている場所を見つけることが出来ませんでした。
よろしくお願いします。


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

//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.048 sec.

SourceForge