Lumen如何缓存配置?
我正在寻找如何使用Lumen执行等效的Laravel命令Lumen如何缓存配置?,lumen,Lumen,我正在寻找如何使用Lumen执行等效的Laravel命令 php artisan config:cache 这似乎不能作为Lumen artisan命令使用 更新 我找到了 但这只是说它不存在 我目前在lumen和DotEnv库读取.env文件以快速请求时遇到问题。这会导致不读取.env文件,lumen使用其默认设置,这对我的应用程序不正确 我很犹豫是否要将config:cache函数从laravel复制到我的lumen应用程序。这似乎不对?管腔的处理方法是什么 更新2 在深入研究Lumen和
php artisan config:cache
这似乎不能作为Lumen artisan命令使用
更新
我找到了
但这只是说它不存在
我目前在lumen和DotEnv库读取.env文件以快速请求时遇到问题。这会导致不读取.env文件,lumen使用其默认设置,这对我的应用程序不正确
我很犹豫是否要将config:cache函数从laravel复制到我的lumen应用程序。这似乎不对?管腔的处理方法是什么
更新2
在深入研究Lumen和Lightning代码后,似乎可以更可靠地定义具有所需值的文件(例如config/database.php),而不使用.env文件?您不必为您的问题将配置缓存在Lumen中。对于WAMP的
dotenv
问题,有一个不同的解决方案(可能其他环境也会受到影响,请参见下面的第一个链接)
现在必须为共享相同名称的.env
变量指定不同的名称。然后,您必须更改相应的config/.php
文件中的变量名称。下面是一个例子
例子
假设您在同一服务器、不同虚拟主机(在WAMP下)下有2个应用程序。一个应用程序是Lumen API A,另一个是Lumen API B
问题来自这样一个事实:当HTTP请求到达被调用方时,调用方(API A).env
变量不会被被被调用方(分别是API B).env
变量覆盖。但这只是当这些变量具有相同的名称时
即,调用方(API A).env
变量正在内存中读取
DB_DATABASE=<api_a_1>
DB_USERNAME=<api_a_2>
解决方案是以不同的方式命名它们,并将新名称放入config/database.php
。像这样:
API A:
# .env file
API_A_DB_DATABASE=<api_a_1>
API_A_DB_USERNAME=<api_a_2>
API B:
# .env file
API_A_DB_DATABASE=<api_a_1>
API_A_DB_USERNAME=<api_a_2>
如果API B也可以是此服务器中其他Lumen API的调用者,则可以保留默认变量名或为其分配前缀API_B_
现在,您不需要在API A调用者端缓存配置,因为API B被调用者端变量的名称不同,因此始终会被读入内存
细节
我建议阅读
laravel/framework
repo问题列表。如果调用方是Laravel应用程序,您可以通过php artisan config:cache
修复相同的问题,请参阅本文的详细信息。Hi,您是否获得了有关问题的更新?现在,我似乎也遇到了同样的问题,您是否创建了config/database.php文件?是的,刚刚创建了config/database.php文件,我添加了$app->configure('database');在我的bootstrap/app.php和config/database.php文件中,我遗漏了一些东西,但这些文件不起作用?谢谢你的支持。我不需要$app->configure('database')。基本上,我没有.env文件。相反,我只是将config/database.php中的生产值硬编码为env()调用的默认选项。幸运的是,对于我的简单应用程序,我使用的是本地sqlite,所以我不需要存储数据库密码。