【发布时间】:2011-07-04 15:15:07
【问题描述】:
我正在尝试在我的网站中设置环境变量。
这个想法是创建一个 $env='test'; 或 $env='production'; 和所有其他 PHP 文件,检查这个 var 以查看它们在哪个环境中。
我现在要解决的解决方案是在索引文件中创建一个会话。但我对这个解决方案感到不舒服。
【问题讨论】:
我正在尝试在我的网站中设置环境变量。
这个想法是创建一个 $env='test'; 或 $env='production'; 和所有其他 PHP 文件,检查这个 var 以查看它们在哪个环境中。
我现在要解决的解决方案是在索引文件中创建一个会话。但我对这个解决方案感到不舒服。
【问题讨论】:
最好的方法是在你的...环境中设置你的环境变量。
如果您使用 Apache,您可以将其添加到您的虚拟主机配置(或 .htaccess)中:
SetEnv MYAPP_ENV value
然后,在你的 PHP 中:
$_SERVER['MYAPP_ENV']
您可以找到的所有 Web 服务器都有等效的 SetEnv。
【讨论】:
例如,您可以在索引文件中使用 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
【讨论】:
declare 只接受一个参数,并且该参数必须是指令 ticks 或 encoding 之一。您的意思可能是define 而不是declare?
使用 php sessions 或 cookie。
【讨论】:
你看过 get_cfg_var() 吗?它允许你在php.ini 中设置一些东西,然后调用它(不像ini_get(),它似乎没有在php.ini 中获取自定义变量)
我需要做类似的事情,而这可以为我做。
【讨论】:
最近我编写了一个库来从环境变量中获取值并解析为 PHP 数据类型。该库可用于将环境变量解析为 PHP 数据类型(如转换为整数、浮点数、空值、布尔值),解析 JSON 字符串等复杂的数据结构,以及更多社区的贡献。
该库在此处可用:https://github.com/jpcercal/environment
在名为“www”或“htdocs”或“public”或“web”的目录中使用 .htaccess 文件设置您的环境变量,具体取决于您的托管公司。 .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 ...
}
尽情享受吧。
【讨论】:
PHP 提供了数组:$GLOBALS 来在全局范围内存储变量。
例如
//to set the variable:
$GLOBALS["env"] = "test";
//to access the variable:
$some_var = $GLOBALS["env"];
【讨论】: