通过虚拟主机配置设置Application_ENV,并在 PHP 中读取此内容

2022-08-30 10:24:24

我喜欢这在Zend Framework中的工作方式。我可以通过检查控制器中的常量APPLICATION_ENV来知道我当前正在使用哪个环境。

<VirtualHost *:80>
    #ServerName 
    #DocumentRoot

        SetEnv APPLICATION_ENV "development"

    # Directory
</VirtualHost>

但不幸的是,我无法在我目前的项目中使用采埃孚。如何在我的 PHP 代码中检查此环境变量?


答案 1

由于SetEnv set是Apache环境的价值,因此您可以通过以下方式获取它

或者只是

  • getenv — 获取环境变量的值

如果你在采埃孚项目中观察,你会看到采埃孚使用:public/index.phpgetenv

// 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');
    }
}

这样,您就不必依赖环境设置。


答案 2

SetEnv 定义了一个环境变量。

一旦设置了(在Apache的配置中,或在系统级别),您可以使用getenv函数读取其值:

echo getenv('APPLICATION_ENV');


例如,如果您在文件中使用它:.htaccess

SetEnv TEST glop

您可以使用这部分PHP代码:

var_dump(getenv('TEST'));

你会得到:

string 'glop' (length=4)

推荐