代码中可以使用redis,队列中使用就报没有redis扩展错误

php环境docker
php版本7.2

.env文件,使用的phpredis扩展

代码中可以使用redis,队列中使用就报没有redis扩展错误

进入php容器

代码中可以使用redis,队列中使用就报没有redis扩展错误

代码中使用redis

代码中可以使用redis,队列中使用就报没有redis扩展错误

执行结果:

代码中可以使用redis,队列中使用就报没有redis扩展错误

进入redis容器查看

代码中可以使用redis,队列中使用就报没有redis扩展错误

队列文件代码

代码中可以使用redis,队列中使用就报没有redis扩展错误

使用队列

代码中可以使用redis,队列中使用就报没有redis扩展错误

日志报错如下:

[2020-12-31 11:20:29] local.ERROR: Please make sure the PHP Redis extension is installed and enabled. {"exception":"[object] (LogicException(code: 0): Please make sure the PHP Redis extension is installed and enabled. at /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:77)
[stacktrace]
#0 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Support/helpers.php(433): Illuminate\\Redis\\Connectors\\PhpRedisConnector->Illuminate\\Redis\\Connectors\\{closure}(Object(Illuminate\\Support\\Facades\\Redis))
#1 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(105): tap(Object(Illuminate\\Support\\Facades\\Redis), Object(Closure))
#2 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(28): Illuminate\\Redis\\Connectors\\PhpRedisConnector->createClient(Array)
#3 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(32): Illuminate\\Redis\\Connectors\\PhpRedisConnector->Illuminate\\Redis\\Connectors\\{closure}()
#4 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(110): Illuminate\\Redis\\Connectors\\PhpRedisConnector->connect(Array, Array)
#5 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(90): Illuminate\\Redis\\RedisManager->resolve('default')
#6 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(298): Illuminate\\Redis\\RedisManager->connection('default')
#7 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(207): Illuminate\\Queue\\RedisQueue->getConnection()
#8 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(191): Illuminate\\Queue\\RedisQueue->migrateExpiredJobs('queues:default:...', 'queues:default')
#9 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(167): Illuminate\\Queue\\RedisQueue->migrate('queues:default')
#10 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(282): Illuminate\\Queue\\RedisQueue->pop('default')
#11 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(121): Illuminate\\Queue\\Worker->getNextJob(Object(Illuminate\\Queue\\RedisQueue), 'default')
#12 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(112): Illuminate\\Queue\\Worker->daemon('redis', 'default', Object(Illuminate\\Queue\\WorkerOptions))
#13 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(96): Illuminate\\Queue\\Console\\WorkCommand->runWorker('redis', 'default')
#14 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\WorkCommand->handle()
#15 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Container/Util.php(37): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#16 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#17 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#18 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Container/Container.php(596): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#19 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Console/Command.php(134): Illuminate\\Container\\Container->call(Array)
#20 /Users/liuyunlong/www/laravel-shop/vendor/symfony/console/Command/Command.php(255): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#21 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#22 /Users/liuyunlong/www/laravel-shop/vendor/symfony/console/Application.php(971): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#23 /Users/liuyunlong/www/laravel-shop/vendor/symfony/console/Application.php(290): Symfony\\Component\\Console\\Application->doRunCommand(Object(Illuminate\\Queue\\Console\\WorkCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#24 /Users/liuyunlong/www/laravel-shop/vendor/symfony/console/Application.php(166): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#25 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#26 /Users/liuyunlong/www/laravel-shop/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 /Users/liuyunlong/www/laravel-shop/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#28 {main}
"} 

明明已经安装了扩展,为什么还是会出错呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

php-cli 和 php-fpm 是两个软件,你的 php-cli 可能没有安装 redis 扩展

3年前 评论
讨论数量: 12

不建议使用docker,现在的docker不安全

3年前 评论

你的PHP运行环境被污染了

3年前 评论

队列使用的是php-worker,确认你php-worker安装redis,配置:PHP_WORKER_INSTALL_REDIS

3年前 评论

感觉你是有两套环境 :joy:

3年前 评论

php-cli 和 php-fpm 是两个软件,你的 php-cli 可能没有安装 redis 扩展

3年前 评论

队列和 Redis 使用的数据库配置相同吗?你的 PHP 环境装 Redis 扩展了吗?运行一下这个命令看看

file

3年前 评论

@tu6ge-php 和这个原因类似,我看了php-fpm和php-cli使用的相同的配置文件。原因是我执行php artisan queue:work的是宿主机,到docker的php容器中执行就好了 :joy:

3年前 评论

@Joker10000 那就是解决了,恭喜出坑。

3年前 评论

@Molin 嗯,解决了,多谢解答

3年前 评论

@Imuyu php-worker里面安装了,宿主机没安装,到php-worker里面执行命令就好了,我蠢了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!