gpt4 book ai didi

laravel - getenv 在 EC2 服务器中不起作用

转载 作者:行者123 更新时间:2023-12-02 13:42:19 25 4
gpt4 key购买 nike

我正在尝试将在本地运行良好的应用程序部署到生产环境。

事情是当尝试时:

dd(getenv('APP_ENV'));

返回“假”

但是当我连接 ssh 并输入:

php artisan env

我明白

production

知道为什么它停止工作了吗???

郑重声明,在生产中,我的部署脚本执行 3 个命令:

composer dump-autoload -o
php artisan route:cache
php artisan config:cache

我提到它是因为它可能是唯一不同的软件配置。

编辑:我确定有问题的命令是:

php artisan config:cache

如果如果这样做:

php artisan config:clear

问题已解决。

发送!

最佳答案

使用缓存配置时,.env 文件不再使用,因此 getenv 没有用,因为配置是从以下位置加载的:

bootstrap/cache/config.php

相反,您可以从加载的应用程序配置中获取当前环境,如下所示:

config('app.env');

或者直接使用app辅助函数:

app('env');

作为第三个选项,您始终可以使用environment方法来获取当前环境:

app()->environment(); // or App::environment()
<小时/>

Laravel 使用 dotenv内部库,用于从 .env 文件和 add them to the environment variables 加载配置 key 使用putenv ,但是当您缓存配置时,加载部分不再完成,因为 Laravel 检测到存在缓存文件并使用它,因此 .env 中的那些键不会加载到环境中,这无法通过 getenv 访问。

由于 .env 文件中的配置值仅在 config 目录中的实际配置文件中使用时才会被缓存,因此您需要创建一个配置选项以便在您使用缓存时缓存并访问它们。

因此,如果您希望在 .env 文件中拥有一个具有以下值的 BASE_URL 键:

BASE_URL=http://domain.com/

如果您希望在配置缓存时能够访问其值,则需要在配置文件中使用它。例如,您可以将其添加到您的 config/app.php 文件中,如下所示:

'base_url' => env('BASE_URL')

然后你甚至可以在配置iit时访问:

config('app.base_url')
<小时/>

您可以在Laravel Documentation中阅读有关访问配置值的更多信息。 .

关于laravel - getenv 在 EC2 服务器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36345020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com