我正在尝试在我的网站中设置环境变量。
我们的想法是创建一个$env='test';
或$env='production';
以及所有其他PHP文件,检查此var以查看它们在哪个环境中。
我现在要解决的解决方案是在索引文件中创建一个会话。但我对这个解决方案感到不舒服。
答案 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