我正在寻找如何使用流明执行等效的Laravel命令
php artisan config:cache
这似乎不是流明工匠的命令吗?
更新 我发现this related question 但这仅表示它不存在。
我目前在流明和DotEnv库读取.env文件中的快速请求方面遇到麻烦。这将导致无法读取.env文件,并且流明会使用其默认设置,该设置对我的应用程序不正确。
我很想将config:cache函数从laravel复制到我的lumen应用程序。这似乎不对吗?流明处理的方式是什么?
更新2 在研究了Lumen和Illuminate代码之后,似乎更可靠的方法是定义具有所需值的文件(例如config / database.php),而不使用.env文件?
答案 0 :(得分:0)
您不必因问题而在Lumen中缓存配置。针对WAMP的dotenv
问题有另一种解决方案(可能其他环境也受到了影响,请参见下面的第一个链接)。
您必须为.env
变量赋予不同的名称,这些变量现在共享相同的名称。然后,您必须在各自的config/<configname>.php
的文件中更改变量名称。示例如下。
假设您在同一服务器下有两个应用程序,在虚拟主机(在WAMP下)下。一个应用程序是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>
尽管被叫被叫人.env
文件具有如下所示的事实,但将不会被被叫人的那一侧(API B)代替:
DB_DATABASE=<api_b_1>
DB_USERNAME=<api_b_2>
解决方案是使用不同的名称命名并将新名称放入config/database.php
中。像这样:
API A :
# .env file
API_A_DB_DATABASE=<api_a_1>
API_A_DB_USERNAME=<api_a_2>
// config/database.php file
...
// ... other keys
'connections'=> [
// ... other keys
'mysql'=> [
'database' => env('API_A_DB_DATABASE', 'forge'),
'username' => env('API_A_DB_USERNAME', 'forge'),
]
]
API B :
如果API B也可以是此服务器中其他Lumen API的调用者,则可以保留默认变量名称或为它们分配前缀API_B_
。
现在,您无需在API A调用者端缓存配置,因为您的API B被调用者端变量由于名称不同而始终会被读入内存。
我建议您阅读laravel/framework
回购问题列表上的this explanation。如果呼叫者是Laravel应用,则您可以通过php artisan config:cache
来解决同一问题,请参阅此SO帖子的详细信息。