2012-05-25 6 views
5

サーバ上のすべてのPHPスクリプトで使用できる定数(文字列)を使いたいと思います。PHP:デフォルトのphp.iniファイルで定数を設定することができます

http://php.net/manual/en/function.parse-ini-file.phpによると、これは余分な.iniファイルを解析すると非常に簡単ですが、余分なファイルを解析したくない場合は、何も解析せずにグローバルphp.iniに定数を設定したいスクリプト。 (これは、私が定数を必要とするので、実際には、/ etc/parseを含むものを見つける必要があるためです:この特別な.iniファイルの場所はわかりません。 php.iniの新しい定数が次にini_get()でアクセスしようとしましたが、他の方法はありませんか?

ApacheとPHPを自分でコンパイルするので、コンパイル時に定数を設定したり、必要であればApache定数を使用することもできます。

あなたはそれがあなたのユーザーランドのスクリプトのいずれかの前に実行されるようにこれを行うには、あなたのPHPのiniファイルにPHP auto_prepend_fileスクリプトを使用することができます

答えて

7

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

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

ザ・:

だからあなたのようなiniファイルの行を追加することができます今すぐ

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

をPHPスクリプトにあなたからCONSTANT_NAMEにアクセスすることができますあなたが好きな場所であれば、それはすべてのPHPスクリプトで利用可能です。

このテクニックは、mod_rewriteベースの大量仮想ホスティングを使用するステージングサーバー上で使用しています。そのため、PHPスクリプトに正確なドキュメントルートを与えることができます。私はこれをblog post beforeで議論しました。

+0

本当に私が望んでいたのですが、うまくいきました。 – Robby75

+0

残念ながら、それはあなたが得ることに近いです。 – Treffynnon

0

あなたはすでに$_SERVERに既に用意されているものと同様のもの、特に 'DOCUMENT_ROOT'が既に存在することがわかります。

+0

正確には、私はDOCUMENT_ROOTに似た何かが必​​要です(DOCUMENT_ROOTはこの質問の要点です)。 – Robby75

+0

@ Robby75これは達成するために私の答えで解決策を使用しているものですステージングサーバー:http://stackoverflow.com/a/10751734/461813 – Treffynnon

0

シンプルです。定数を定義し、そのファイルをphp.iniのグローバルinclude_pathに追加するファイルxxx.phpを作成します。しかし、この種のグローバル定数や変数を保持することは推奨されている方法ではありません。あなたの定数がどこから来ているのかを忘れてしまい、あなたのアプリケーションを移植性が高く、他の開発者にとっては明白にしません。

関連する問題