6

サーバー上のすべてのPHPスクリプトで使用できる定数(文字列)が必要です。

http://php.net/manual/en/function.parse-ini-file.phpによると、追加の.iniファイルを解析する場合、これは非常に簡単ですが、追加のファイルを解析したくないので、スクリプト内の何も解析せずに、グローバルphp.iniに定数を設定します。(実際、インクルード/解析などするものを見つけるための定数が必要なため、これが全体のポイントです。この余分な.iniファイルがどこにあるかがわかったら、もう必要ありません!)

php.iniで新しい定数を作成し、ini_get()でそれにアクセスしようとしても機能しませんが、他の方法はありますか?

私はApacheとPHPを自分でコンパイルしているので、コンパイル時に定数を設定したり、必要に応じてApache定数を使用したりすることもできます。

4

3 に答える 3

11

PHP iniでPHPスクリプトを使用するauto_prepend_fileと、ユーザーランドスクリプトの前に実行されるため、これを行うことができます。

メインファイルの前に自動的に解析されるファイルの名前を指定します。ファイルはrequire関数で呼び出されたかのようにインクルードされるため、include_pathが使用されます。

したがって、次のようなini行を追加できます。

auto_prepend_file="/home/user/script.php"

/home/user/script.php内:

define('CONSTANT_NAME', 'your nice value here');

CONSTANT_NAMEこれで、PHPスクリプトで、すべてのPHPスクリプトで使用できるため、どこからでもアクセスできます。

この手法は、mod_rewriteベースの大規模仮想ホスティングを使用するステージングサーバーで使用しているため、PHPスクリプトに正確なドキュメントルートを提供できます。これについては、以前のブログ投稿で説明しました。

于 2012-05-25T09:20:36.207 に答える
1

単純。定数を定義するファイルxxx.phpを作成し、そのファイルをphp.iniのグローバルinclude_pathに追加します。ただし、この種のグローバル定数または変数を保持することは、定数がどこから来ているのかを忘れてしまい、アプリを他の開発者にとって移植性が高く明示的にしないため、推奨される作業方法ではないことを付け加えておきます。

于 2012-05-25T09:23:48.830 に答える
0

あなたが言ったことから、 $ _ SERVER、特に「DOCUMENT_ROOT」ですでに同様のものがすでに利用可能であることがわかると思います。

于 2012-05-25T09:22:25.523 に答える