我用Laravel 5.3测试我的系统:
过去几周我的系统工作正常。自上周末以来,我遇到了同样的错误 TWICE ,如下所示: -
注意:未定义的变量:第303行的C:\ NewFolder \ htdocs \ project \ vendor \ vlucas \ phpdotenv \ src \ Loader.php中的_ENV
警告:array_key_exists()期望参数2为数组,在第303行的C:\ NewFolder \ htdocs \ project \ vendor \ vlucas \ phpdotenv \ src \ Loader.php中给出null
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
,但仍未能恢复正常。任何人都知道为什么会这样?感谢
我使用的版本:
答案 0 :(得分:3)
不应定义$_ENV
超全局的唯一原因是它是否已从variables_order
配置中删除。
检查php.ini
(或任何其他相关配置文件)中的variables_order
属性。要设置$_ENV
,必须包含" E" 。默认设置为
variables_order = "EGPCS"
如果您在查找配置时遇到问题,<?php phpinfo() ?>
转储还应显示值和配置文件位置。
variables_order
是PHP_INI_PERDIR
模式设置,意思是......
可以在 php.ini , .htaccess , httpd.conf 或 .user.ini (自PHP 5.3起)
字符代表
$_ENV
$_GET
$_POST
$_COOKIE
$_SERVER
答案 1 :(得分:0)
经过一些调查和研究,我发现Github #8191有一些类似的问题。
我可以通过运行php artisan config:cache
来摆脱错误。意味着Laravel将从配置文件中读取环境变量,而不是直接从.env
答案 2 :(得分:0)
这显然是代码范围之外的错误;它是您的依赖项或系统配置的更改。您应该考虑重建依赖关系缓存,并在错误开始之前回滚到旧版本的依赖关系。
正如@MahdiYounesi所说,从phpdotenv
依赖开始。
答案 3 :(得分:0)
老问题,但在 2021 年发现了同样的错误并已解决:
在 Laravel 7 中使用 https://github.com/lazychaser/laravel-nestedset
解决方案:
代替刀片模板中的@foreach
使用:
@php
foreach(){}
@endphp