改变系统环境变量,在thinkphp下创建一个.env文件,每次修改环境变量时,在config下添加新的环境文件,再.env中同时添加新的环境变量。同时通知团队成员在.env中添加。使用时直接访问ENV函数即可显示环境变量。
Env::get('dabase');//跟直接用Config获取不一样,Config要写全,且是大写
设置系统环境变量参数
env 系统环境变量
use think\Config;
use think\facade\Env;//tp5.1路径
_或.两种写法获取值相同
两种设置方法输出时等同
use think\Config;
use think\Env;
class Index
{
public function index()
{
$res=Env::get('email','default');
dump($res);//输出值会改为大写,且前面加PHP_:PHP_EMAIL。第二个值为没有得到时默认值
}
}
在app同级可添加.env文件,配置内容如图:
环境变量 结合 配置文件 很便捷
1、在项目根目录下创建.env文件,在其中写好配置项
2、在项目config.php文件中使用系统函数读取env文件中的配置项如:
use think\Env;
return [
// 'app_status' => 'dev',
'app_status' => Env::get('status', 'home'),
];
在conf目录先创建home.php 配置文件 即可。 此时为项目配置为家种环境配置
thinkphp不读取.env文件的键对值
第一:$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:
;variables_order
;Default Value: “EGPCS”
;Development Value: “GPCS”
;Production Value: “GPCS”
要想让$_ENV的值不为空:
;variables_orderDefault Value: “EGPCS”
;Development Value: “GPCS”
;Production Value: “GPCS”
第二:
Env不显示的问题,需要在base.php中 putenv的同时,将数据也写入$_ENV,就可以解决了
打开thinkphp目录下的base.php文件修改。
ThinkPHP 引导文件
// 1. 加载基础文件
require __DIR__ . '/base.php';
if (is_file(ROOT_PATH . '.env'))
{
$env = parse_ini_file(ROOT_PATH . '.env', true);
foreach ($env as $key => $val) {
$name = ENV_PREFIX . strtoupper($key);
if (is_array($val)) {
foreach ($val as $k => $v) {
$item = $name . '_' . strtoupper($k);
putenv("$item=$v");
}
} else {
putenv("$name=$val"); //加入这一句
$_ENV[$name]=$val;
}
}
}
// 2. 执行应用App::run()->send();
.env在application同级目录,文件格式为
status='dev'[database]
hostname = localhost
database = vxianfeng
username = root
password = root
hostport = 3306prefix = vxf_
框架中$_ENV 取不到环境变量 将php.ini中
variables_order : "EGPCS";
或
Default Value: "EGPCS"
.env配置环境变量,系统将配置项转为大写并添加前缀
直接从09:35这里开始看
php系统环境变量 use think\Env $res = Env::get('名','默认值');
1.什么是环境变量
tp除了加载项目配置config.php,还会去加载一个可能存在的 env.php ,位于项目根目录下,也就是跟composer.json同级。
有点类似于场景配置,就是说在不同的情况下,项目对配置的要求会有所不同,比如项目的开发环境、预上线环境、测试环境、生产环境等等对配置的要求都不同;这个时候我们就要切换到相应的配置;
2.方法步骤:
a.在和app文件夹同级目录下,新建".env"或者env.php这个文件;
env.php格式和配置文件一样,返回一个数组,例如:
<?php
return [
'app_debug' =>false
];
?>
如果是新建的文件格式是.env,里面就不用<?php?>标识符了;直接书写 'app_debug' =>false这样就行;
通过以上方式就算是初步把env配置设置好了,下面步骤就是开始使用env里面的配置了;
b.接下来我们要掌握怎么获取到.env文件里面的配置了;
例:我们在.env文件里书写了status=dev,接下来我们在conf文件下的config.php里面来获取这个设置:
在config.php文件里与环境变量相关的都从.env配置文件中获取值
<?php
use think\Env;//注意这里别忘了写
return [
//tp5提供了一个惯例参数app_status,只需要改变它的值就能实现一键切换运行环境
'app_status' => Env::get('status','dev');
];
使用Env::get()方法获取配置的参数值;(或者$_ENV['a'])对于组参数需要这样使用Env::get(database.user);
同时系统也会自带环境变量;查看所有环境变量的方式dump($_ENV);
3.env.php优先级:高于config.php;就是说.env里的设置会覆盖config.php里的配置;
.env文件写法
场景配置和环境变量结合使用,应用配置里使用Env::get()获取.env设置的场景名称,然后再使用场景里的配置,函数第二个参数是默认值;
如何获取env全局变量值
在web目录下的.env语法
在.env文件中写入 database数据库信息,然后再conf文件夹下 的 database.php 文件中 通过引入 use think\Env ,用 Env::get('database.username','root') 的形式来完成切换不同数据库的调整。
可以直接在根目录下建立 .env 文件,设置形如 email=123@qq.com 的内容,直接在程序中用 $_ENV['PHP_EMAIL'] 调用出值;
或者 直接引入 use think\Env 库,用Env::get('email') 来调用。
1、打印环境变量 dump($_ENV);(直接打印时是空白的。要对php.ini做修改)
修改方法:
第一步:$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:variables_order = "GPCS"。
要想让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母“E”,即:variables_order = "EGPCS"。
2、在网站根目录下新建 .env文件,文件名也是不能更改的,在网站运行时人自动加载这个文件里的配置(直接右键新建再改名是不行的,要先新建文本文档然后再另存为设置文件名为 .env就可以了。.env文件是用来模拟环境变量配置)

还可以在.env文件中直接配置 databse的相关配置
如果使用了不同系统环境配置那就一定要设置.env文件,这样就可以方便的把开发环境、测试环境 、运营环境相互切换
1.什么是环境变量
tp除了加载项目配置config.php,还会去加载一个可能存在的 env.php ,位于项目根目录下,也就是跟composer.json同级。
有点类似于场景配置,就是说在不同的情况下,项目对配置的要求会有所不同,比如项目的开发环境、预上线环境、测试环境、生产环境等等对配置的要求都不同;这个时候我们就要切换到相应的配置;
2.方法步骤:
a.在和app文件夹同级目录下,新建".env"或者env.php这个文件;
env.php格式和配置文件一样,返回一个数组,例如:
<?php
return [
'app_debug' =>false
];
?>
如果是新建的文件格式是.env,里面就不用<?php?>标识符了;直接书写 'app_debug' =>false这样就行;
通过以上方式就算是初步把env配置设置好了,下面步骤就是开始使用env里面的配置了;
b.接下来我们要掌握怎么获取到.env文件里面的配置了;
例:我们在.env文件里书写了status=dev,接下来我们在conf文件下的config.php里面来获取这个设置:
在config.php文件里与环境变量相关的都从.env配置文件中获取值
<?php
use think\Env;//注意这里别忘了写
return [
//tp5提供了一个惯例参数app_status,只需要改变它的值就能实现一键切换运行环境
'app_status' => Env::get('status','dev');
];
使用Env::get()方法获取配置的参数值;(或者$_ENV['a'])对于组参数需要这样使用Env::get(database.user);
同时系统也会自带环境变量;查看所有环境变量的方式dump($_ENV);
3.env.php优先级:高于config.php;就是说.env里的设置会覆盖config.php里的配置;
env
Env不显示的问题,需要在base.php中 putenv的同时,将数据也写入$_ENV,就可以解决了
打开跟目录下的base.php文件修改。54行左右
putenv("$name=$val");
//写入环境变量,才能在打印$_ENV文件的时候显示出来配置的环境变量
$_ENV[$name]=$val;
.env文件 系统变量配置 think,下ENV类get()获取
可通过.env配置数据库配置
[database] 分组
hostname = "localhost"
username = 'root'
password = 'root'
在真实的环境变量中是,有PHP_前缀
环境变量ENV的配置和使用
1.为什么需要ENV:因为环境不同,应用的参数也可能不同,那么就需要一个可以配置环境变量的文件,根据所处的环境配置相应的参数,
利于对不同环境下工作的人员可通过同一文件,进行简单的参数配置,就可以在他需要的环境下正常运行
2.环境变量ENV配置和使用的实现
a.在根目录下创建.env文件,输入参数的配置key = value来增加环境变量,例如status=dev,表示开发环境;[database]表示分组 host=local user=root password=123,表示一组参数
b.在conf目录下新建配置文件,与环境变量相关的都从.env配置文件中获取值
c.通过引入命名空间use think\Env来获取环境变量,通过系统Env::get(key,"default")函数获取,引入第二个参数是当key不存在时,返回第二个参数的值