【问题标题】:Call to undefined method Illuminate\Support\Facades\Redis::connect()调用未定义的方法 Illuminate\Support\Facades\Redis::connect()
【发布时间】:2019-10-15 01:18:10
【问题描述】:

通过 Homestead 运行 Laravel 5.7。

这发生在:

/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php
"line":66
"function":"establishConnection"

我们正在使用 PHP Redis 并在 config/database.php 中:

'redis' => [

        'client' => 'phpredis',

        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 6,
        ],

    ],

我在这里看到了其他答案,但没有一个步骤有效。没有使用redis集群。 PhpRedis 扩展安装在 VM 上并通过php -m 确认。 Redis服务器运行在127.0.0.1,可以外接代码。

我无法更改代码,因为它适用于其他人。这一定是我的虚拟机上的配置问题,但我看不出它可能是什么。如果有人有类似的问题,我将不胜感激任何建议。

【问题讨论】:

    标签: php laravel redis


    【解决方案1】:

    您遇到的问题是由于类命名冲突:PhpRedisConnector 创建了新的\Redis 客户端,但您似乎在应用程序的某处设置了Illuminate\Support\Facades\Redis 外观的别名。 PhpRedisConnector 创建 new Redis 并获取外观对象。

    尝试在您的config/app.php 中删除此行:

    'aliases' => [
        ...
        'Redis' => Illuminate\Support\Facades\Redis::class, // remove this line
        ...
    ]
    

    【讨论】:

    • 我很欣赏这个答案并同意这似乎是一个类命名冲突,但是这个答案不起作用。只是删除 Redis Facade 会导致同一文件中的错误 PhpRedisConnector.php 就在之前的 createClient 方法中:Class 'Redis' not found
    • @peacemaker then redis 扩展在您的 PHP 中丢失或未启用。如果找不到Redis 类,这是唯一的解释。请参阅this 之类的问题来解决您的问题。
    • 谢谢你,你是对的!看来,虽然我已经安装了 php-redis 并且它显示在 php -m 输出中,但重新安装它可以解决问题。我会将您的答案标记为已解决。
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 2019-03-04
    • 2023-03-24
    • 2019-05-14
    • 2021-10-29
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多