Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5-env()始终返回null_Php_Laravel_Environment Variables_Phpdotenv - Fatal编程技术网

Php Laravel 5-env()始终返回null

Php Laravel 5-env()始终返回null,php,laravel,environment-variables,phpdotenv,Php,Laravel,Environment Variables,Phpdotenv,我试图找出为什么我的env()助手总是返回null。这会导致问题,尤其是在app.php文件中,默认情况下,这些文件中广泛使用的是env()帮助程序。也许有什么神秘的服务器设置 我的环境文件: APP_ENV=production APP_KEY=base64:mymagickey= APP_DEBUG=false APP_LOG_LEVEL=info APP_URL=http://www.example.com etc... php artisan cache:clear php arti

我试图找出为什么我的
env()
助手总是返回
null
。这会导致问题,尤其是在
app.php
文件中,默认情况下,这些文件中广泛使用的是
env()
帮助程序。也许有什么神秘的服务器设置

我的环境文件

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...
php artisan cache:clear
php artisan view:clear
php artisan config:cache
编辑-我尝试了以下内容:

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...
php artisan cache:clear
php artisan view:clear
php artisan config:cache
当然,我是这样使用
env
助手的:
env('APP\u env')

但仍然没有成功。wierd部分是,
$\u ENV
php变量包含
.ENV
文件中的每个变量。

这是一个已知的“.ENV”错误,可以通过以下方法解决:

php artisan config:cache

如果您的Laravel在.env或数据库文件夹中进行某些修改后或由于任何其他修改而无法按预期工作,则有五个最重要的命令。 以下是完整的解释:

使用
\Config::get('app.env')而不是
env(APP_env)因为你最终会得到同样的错误,这对一个实时网站来说是不好的

如果要从环境中添加自定义变量,请进入配置应用程序并找到以下内容:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
在“
'env'=>env('APP_env','production'),
下添加新行,例如,它可以是以下内容:

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
'key' => env('APP_KEY'),
您可以这样调用“key”变量:

\Config::get('app.key');

每当您向app env添加一个新变量(如“key”)时,您都需要使用
config:cache
重置缓存。

希望此命令能帮您节省时间

php artisan配置:清除

env(…)
函数在缓存配置后将不起作用。(从laravel 5.2开始到当前5.7)

警察说

如果在部署期间使用
config:cache
命令,则必须确保仅从配置文件中调用
env
函数,而不是从应用程序中的任何其他位置调用

所以正确的答案是

如果您是从应用程序中调用env,强烈建议您向配置文件中添加适当的配置值,并从该位置调用env,从而将env调用转换为config调用

我引用了同样的话

但对于快速修复,这可以做到:

php artisan配置:清除


现在应该清楚了,为什么当您尝试
config:cache
时,它没有帮助,即使它在缓存之前清除了配置。

以下命令对我有效。 我意外地清除了所有缓存文件,因此
env('something')
返回null

php artisan optimize:clear

我知道这是一条非常古老的线,原因可能不一样。但同样的问题也发生在我身上

原因是我在.env文件中遇到了问题。这就是我得到的。环境

TEST="e@1asa
请注意,缺少结束引号。应该是这样的,

TEST="e@1asa"
由于此错误,我在此之后添加的所有env变量都返回null


甚至没有写入错误日志。因此,如果遇到此错误,请尝试添加一个示例env变量作为文件的第一条记录。如果它工作并且最后记录不工作
,则.env

中可能有错误,请将.env文件放置在项目的根文件夹中

将这些添加到app.php文件中

try {
    (new Dotenv\Dotenv(__DIR__.'/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
    echo $e;
}

如果接受的答案无法解决问题,请检查.env文件是否具有正确的读写权限。如果框架/库无法读取文件,则值将始终为null。我在我的一个Lumen项目中遇到过这个问题,但在更改了文件权限后,它就起作用了。

只需在您的Laravel项目根目录下运行此命令

rm bootstrap/cache/config.php
试一试

这将清除与应用程序、路由、配置、, 已编译的服务和包


有些用户可能需要执行php artisan配置:clear而不是Headlaravel 5.5,我必须运行“php artisan配置:clear”。Thankshp artisan config:cache是env()值为null的原因。如果希望缓存配置和环境变量,则不应在配置文件之外的任何其他地方使用env(),因为一旦缓存,env()将始终返回null。虽然现在我也看到config()和config::get()帮助程序在缓存后返回null,这也很奇怪。请继续上面的操作-…这样您就应该意识到config()帮助程序也不能直接访问.env中的值。您将需要创建或使用现有的config/.php config文件,并从.env创建配置条目,然后使用该映射值。我不确定,但此错误可能只在windows中发生。但您的解决方案也在windows中解决了此问题。它能在linux生产环境下工作吗?@AmitShah,它不是一个bug,它是一个特性。有关详细信息,请查看我的答案。这里有相同的问题…无法使用env()。我尝试过删除缓存、自动加载编写器转储等。我使用的是laravel 5.5.44,必须使用\config::get()从.env文件调用配置我已经在一个地方列出了您需要运行的所有命令,以消除env文件或配置等的任何缓存问题。以下是线程:请运行所有命令,并告诉我是否仍然不起作用。仅运行
php artisan config:cache
不起作用。运行
php-artisan-config:clear
后,它就可以工作了。现在我可以再次使用env($key)。Thx@LearnerI阅读了您的讨论,并将我的解释放在单独的答案中,请查看。谢谢,
php artisan config:clear
是唯一能够让我的AWS SES凭据阅读的工具。因此我认为我们不应该在我们的应用程序中直接使用类似
env('APP_env')
。相反,我们应该在
config/app.php
中写一行:
'env'=>env('app_env'),
。然后,我们在我们的代码中使用它:
config('app.env')
@cosmos对于任何阅读本文的人,请始终这样做,
env
只在任何
config/*.php
文件中有用,绝不在外部!!!!非常感谢。这件事今天突然发生在我身上——拉拉维尔8号。这把它修好了