Php 未定义变量:Laravel 5.3中的_ENV

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\

我正在用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:

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,我的错误。对不起!我同意你的看法。