2

私はphpnewbであり、パスに苦労しています。

アプリケーションのルートにconfig.phpファイルがあり、親のディレクトリパスを格納する定数を定義しています。

define("SITE_ROOT", realpath(dirname(__FILE__)));

サイトにはさまざまなフォルダがあります:/ include / / admin / / theme /

これで、SITE_ROOT定数がグローバルであっても、グローバル宣言はそのスクリプトが終了するまでしか宣言されないことを理解しています。

したがって、たとえば、admin.phpでSITE_ROOTをエコーすると、config.phpをadmin.phpに含めていないため、phpエラーが発生します。

さて、すべてのファイルにconfig.phpを含めることをスキップして、SITE_ROOT定数をどこでも利用できるようにする方法はありますか?

TYとても!:)

4

1 に答える 1

3

php ini設定auto_prepend_fileがあります。これにより、各リクエストの開始時に特定のファイルが自動的にロードされるように指定できます。

そうは言っても、私はそのアプローチを使用しないことを強くお勧めします。各スクリプトの先頭に配置できない場合はrequire_once("config.php")、apacheのmod_rewrite(.htaccess経由)などを使用して、すべてのリクエストを単一の「ブートストラップ」スクリプトにルーティングすることもできます。そこからあなたを含めconfig.php、リクエストを分析し、それを処理するための適切なスクリプトをロードします。

于 2012-11-30T06:38:49.123 に答える