gpt4 book ai didi

laravel - Redis 连接 [] 尚未配置。 - 传递的连接属性为空

转载 作者:行者123 更新时间:2023-12-03 06:37:38 27 4
gpt4 key购买 nike

我正在实现 redis 支持的队列,但突然面临上述问题。看起来 $connection 变量在传递给 Horizo​​n.php 时为空。无法清除路由和配置,因为任何 artisan 命令最终都会抛出相同的错误。以下是 Horizo​​n.php 中的代码。我执行了 dd($connection) 并发现它是空的。

public static function use($connection)
{
if (! is_null($config = config("database.redis.clusters.{$connection}.0"))) {
config(["database.redis.{$connection}" => $config]);
} elseif (is_null($config) && is_null($config = config("database.redis.{$connection}"))) {
throw new Exception("Redis connection [{$connection}] has not been configured.");
}

config(['database.redis.horizon' => array_merge($config, [
'options' => ['prefix' => config('horizon.prefix') ?: 'horizon:'],
])]);
}

最佳答案

新答案

在我的案例中,问题的发生是因为配置缓存,正如我在旧答案中提到的那样。但是,与其编辑供应商文件,更好的方法是前往 bootstrap/cache/config.php,将其删除或更好地重命名以在出现问题时回滚。这将禁用配置缓存。因此,运行 composer install 或 composer dump-autoload 不会产生错误。您可以通过运行 php artisan config:cache

缓存配置

旧答案

我遇到了同样的问题。然而,我的决议有点老套,而且不是很干净。但是由于 Laravel 的有限经验,这是我能想到的最好的。

我的问题是使用 php artisan config:cache 缓存配置。

当检查连接时,包使用这段代码:

/**
* Setup the configuration for Horizon.
*
* @return void
*/
protected function configure()
{
$this->mergeConfigFrom(
__DIR__.'/../config/horizon.php', 'horizon'
);

Horizon::use(config('horizon.use'));
}

此函数检查标志 configurationIsCached。如果它打开,它只是取消从 horizo​​n 合并配置,然后 config('horizo​​n.use') 将返回 null

虽然我不太喜欢它,但它为我解决了这个问题。我所做的是,

  1. 获取 horizo​​n 包 vendor/laravel/horizo​​n/config/horizo​​n.php 中的配置并将其添加到我的配置目录 config/horizo​​n.php

  2. Illuminate\Support\ServiceProvider::mergeConfigFrom中,我临时注释掉了应用缓存的条件检查。我想一定有更好的解决方案,也许可以将变量设置为 false。

  3. 运行 php artisan config:cache

  4. 删除 Illuminate\Support\ServiceProvider::mergeConfigFrom 中的注释。

  5. 运行 php artisan horizo​​n:install

所以它成功了。我希望这会有所帮助。

关于laravel - Redis 连接 [] 尚未配置。 - 传递的连接属性为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845345/

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