カテゴリ | |
サマリ | default.ini.phpの読み込まれるタイミングについて |
バージョン | 1.4.7 |
投稿者 | |
状態 | 完了 |
投稿日 | |
ちょっと基本的なことでご教示いただきたいことがあります。
PukiWikiのDATA_HOMEにあるdefault.ini.phpはどのタイミングで、どのような仕組みで読み込まれるのでしょうか?
DATA_HOMEのディレクトリを下位ディレクトリも含めてgrep検索しましたが、include文やrequire文で読み込まれている場所を見つけることが出来ませんでした。
よろしくお願いします。
- dev サイトのどこかに解説があったような気もするけど、まあいっか。複数Wiki を設置するために設定を変更したい(質問箱/3456 など)とか、入り口によって設定を切り替えたい(質問箱/2339 など)とか、default or keitai に応じて設定を切り替えたい(質問箱/4273 など)という場合に、理解しておく必要がありますしね。 --
- まず入り口(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
呼び出すように書かれているせいでしょう。 --
- たいへん解りやすく有用な回答をありがとうございます。iii-aまでとiv以降は何とか解読出来るのですが、独学浅学の身ではiii-b,iii-cの部分が難解でどうしても理解できず、とても define('UA_INI_FILE', DATA_HOME . UA_PROFILE . '.ini.php'); など気がつきませんでした。このような端的でわかり易いガイドを頂いたので、もう一度じっくりこの部分を精読してみたいと思います。ありがとうございました。 --