Php 未定义变量:Laravel 5.3中的_ENV
我正在用Laravel 5.3测试我的系统: 在过去的几个星期里,我的系统运转良好。自上周末以来,我两次遇到相同的错误,如下所示:- 注意:未定义的变量:_ENV位于第303行的C:\NewFolder\htdocs\project\vendor\vlucas\phpdotenv\src\Loader.php中 警告:array_key_exists()要求参数2为数组,在第303行的C:\NewFolder\htdocs\project\vendor\vlucas\phpdotenv\src\Loader.php中为空 Loader.php:Php 未定义变量:Laravel 5.3中的_ENV,php,laravel,laravel-5,environment-variables,vendor,Php,Laravel,Laravel 5,Environment Variables,Vendor,我正在用Laravel 5.3测试我的系统: 在过去的几个星期里,我的系统运转良好。自上周末以来,我两次遇到相同的错误,如下所示:- 注意:未定义的变量:_ENV位于第303行的C:\NewFolder\htdocs\project\vendor\vlucas\phpdotenv\src\Loader.php中 警告:array_key_exists()要求参数2为数组,在第303行的C:\NewFolder\htdocs\project\vendor\vlucas\phpdotenv\src\
public function getEnvironmentVariable($name)
{
switch (true) {
case array_key_exists($name, $_ENV): // line 303 here
return $_ENV[$name];
case array_key_exists($name, $_SERVER):
return $_SERVER[$name];
default:
$value = getenv($name);
return $value === false ? null : $value;
}
}
.env
APP_ENV=local
APP_KEY=base64:oTU0Ok1mmE6x0qEosGKhCSxpQLAlBAnNreH7sFAKkdM=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=new_db
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_APP_ID=
- 当第一次出现上述错误时(当我加载登录页面时),我清除了浏览器缓存和历史记录,系统成功恢复正常
- 当第二次(在测试过程中)出现相同的错误时,我与第一次一样,清除了浏览器缓存和历史记录,但没有帮助,在刷新浏览器后仍然显示错误。所以我执行了
和php-artisan-view:clear
,但仍然无法恢复正常php-artisan-cache:clear
public function getEnvironmentVariable($name)
{
switch (true) {
case array_key_exists($name, $_ENV): // line 303 here
return $_ENV[$name];
case array_key_exists($name, $_SERVER):
return $_SERVER[$name];
default:
$value = getenv($name);
return $value === false ? null : $value;
}
}
- 操作系统:窗口7
- 浏览器:Mozilla Firefox
- PHP:7.1.1
- 拉威尔:5.3
- 不应定义
$\u ENV
超级全局的唯一原因是它是否已从配置中删除
检查php.ini
(或任何其他相关配置文件)中的variables\u order
属性。要设置$\u ENV
,它必须包含一个“E”。默认设置为
variables_order = "EGPCS"
如果在定位配置时遇到问题,则
转储还应显示值和配置文件位置
变量\u顺序
是一种模式设置,意味着
条目可以在php.ini、.htaccess、httpd.conf或.user.ini中设置(从php 5.3开始)
这些字符代表
- E-
$\u环境
- G-
$\u GET
- P-
$\u POST
- C-
$\u COOKIE
- S-
$\u服务器
我可以通过运行
php-artisan-config:cache
来消除错误。意味着Laravel将从配置文件中读取环境变量,而不是直接从.env中读取环境变量这显然是一个超出代码范围的错误;这是对依赖项或系统配置的更改。您应该考虑重建依赖缓存,并在错误开始的日期之前回滚到旧版本的依赖项。p>
正如@MahdiYounesi所说,从
phpdotenv
依赖项开始。这很奇怪,您是否尝试使用composer update更新您的应用程序?运行:php artisan view:clear
@HirenGohel非常肯定OP在点2中说他们已经尝试了php artisan view:clear
和php artisan cache:clear
@Phil Yeah,我的错误。对不起!我同意你的看法。