如何在PHP中设置env变量?

时间:2011-07-04 15:15:08

标签: php environment-variables

我正在尝试在我的网站中设置环境变量。

我们的想法是创建一个$env='test';$env='production';以及所有其他PHP文件,检查此var以查看它们在哪个环境中。

我现在要解决的解决方案是在索引文件中创建一个会话。但我对这个解决方案感到不舒服。

6 个答案:

答案 0 :(得分:8)

最好的方法是在环境中设置环境变量。

如果使用Apache,可以在虚拟主机配置(或.htaccess)中添加:

SetEnv MYAPP_ENV value

然后,在你的PHP中:

$_SERVER['MYAPP_ENV']

您可以找到所有Web服务器的SetEnv等效项。

答案 1 :(得分:1)

您可以在索引文件中使用declare方法,例如;

define('env', 'production');
//check for env
function isEnv($env = 'production')
{
  return defined(env) && $env == env;
}
//now use our function
if(isEnv('dev'))
//do something here

答案 2 :(得分:0)

使用php sessions或cookies。

答案 3 :(得分:0)

你看过get_cfg_var()吗?它允许您在php.ini中设置内容并调用它(与ini_get()不同,它似乎不会在php.ini中抓取自定义变量)

我需要做类似的事情,这能够为我做到这一点。

答案 4 :(得分:0)

最近我写了一个库来从环境变量中获取值并解析为PHP数据类型。该库可用于将环境变量解析为PHP数据类型(如转换为整数,浮点数,空值,布尔值),使用社区的贡献解析复杂的数据结构,如JSON字符串等。

图书馆可在此处找到:https://github.com/jpcercal/environment

使用.htaccess文件在名为“www”或“htdocs”或“public”或“web”的目录中设置环境变量,具体取决于您的托管公司。 .htaccess的内容:

...
SetEnv APP_ENV production
...

要从环境变量中获取值(独立于环境CLI,Apache,Nginx,PHP内置服务器等),请执行以下操作:

<?php
// ...
require "vendor/autoload.php";
// ...
if (Cekurte\Environment\Environment::get("APP_ENV") === "production") {
    // ...
    // It is your production environment ...
} else {
    // ...
    // It is your development environment ...
}

享受它。

答案 5 :(得分:-2)

PHP提供了数组:$ GLOBALS,用于在全局范围内存储变量。

e.g。

//to set the variable:
$GLOBALS["env"] = "test";
//to access the variable:
$some_var = $GLOBALS["env"];

更多信息:http://php.net/manual/en/reserved.variables.globals.php