これがZend Frameworkでどのように機能するかが気に入っています。コントローラーのAPPLICATION_ENV定数を確認することで、現在使用している環境を知ることができます。
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
しかし、残念ながら、現在のプロジェクトではZFを使用できません。 PHP=コードでこの環境変数を確認するにはどうすればよいですか?
SetEnv はApacheの環境に値を設定するため、次のようにして取得できます。
Apache_getenv
— Apache subprocess_env変数を取得するあるいは単に
getenv
—環境変数の値を取得しますpublic/index.php
ZFプロジェクトでは、ZFがgetenv
を使用することがわかります。
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?
getenv('APPLICATION_ENV') :
'production'));
よく使用される代替手段は、PHPからホスト名を読み取り、それに応じて定数を定義することです。
if(!defined('APPLICATION_ENV')) {
if(FALSE === stripos($_SERVER['SERVER_NAME'], 'www.yourdomain.com')) {
define(APPLICATION_ENV, 'development');
} else {
define(APPLICATION_ENV, 'production');
}
}
この方法では、環境設定にまったく依存する必要はありません。
$_SERVER
変数からもアクセスできます。
私は同じ問題を抱えていて、それを解決しました。問題を解決する方法は、Apache initスクリプトですべての変数を宣言することです。
CentOSでApacheを使用していますが、initスクリプトは/etc/init.d/httpd
このコードを追加しますが、特定のケースに合わせて変更します。
Oracle_HOSTNAME=ora11g.home.com; export Oracle_HOSTNAME
Oracle_BASE=/u01/app/Oracle; export Oracle_BASE
Oracle_HOME=$Oracle_BASE/product/11.2.0/db_1; export Oracle_HOME
Oracle_SID=ora11g; export Oracle_SID
Oracle_TERM=xterm; export Oracle_TERM
PATH=$Oracle_HOME/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$Oracle_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=$Oracle_HOME/JRE:$Oracle_HOME/jlib:$Oracle_HOME/rdbms/jlib;
export CLASSPATH
これで私の問題が解決しました。これがお役に立てば幸いです。