为什么打印 $_ENV 和 $_SERVER 的结果一样,而且打印$_ENV也没显示.env文件的配置内容
老哥牛逼
第一,要想让$_ENV的值不为空,php.ini配置中设置variables_order = "EGPCS"或开启。
第二,$_ENV本身就不会显示.env配置文件中配置的环境变量信息,$_ENV只会显示单独配置的环境变量信息,而要想得到.env配置文件中的环境变量参数配置信息,只能通过Env::get()获得
可以直接在配置文件中使用环境变量进行本地环境和服务器的自动配置,例如:
return [ 'hostname' => Env::get('hostname','127.0.0.1'), ];
环境变量中设置的APP_DEBUG和APP_TRACE参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。
第一步:$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:variables_order = "GPCS"。
要想让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母“E”,即:variables_order = "EGPCS"。
第二步:
Env不显示的问题,需要在base.php中 putenv的同时,将数据也写入$_ENV,就可以解决了
打开thinkphp目录下的base.php文件修改。54行左右
putenv("$name=$val");
//写入环境变量,才能在打印$_ENV文件的时候显示出来配置的环境变量
$_ENV[$name]=$val;