今天在学习thinkphp5的队列扩展,教程地址:https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.md
在使用thinkphp5的队列扩展时,需要安装redis,本地已经安装好了redis扩展,通过phpinfo也可以看到redis,同时,在thinkphp控制器代码中也可以使用$redis = new \Redis()获取redis实例。但在命令行下输入命令:
php think queue:work --queue helloJob
老是提示:
redis扩展未安装
查看thinkphp源码,发现是\vendor\topthink\think-queue\src\queue\connector\Redis.php中的第37行
extension_loaded('redis') 提示redis无法加载。
同时在命令行下执行php-m时,看不到redis扩展。
对于这种情况首先考虑本机上是否安装了多个版本的php,以致于在命令行下的php是读取的其他版本的php命令。
所以说,首先考虑的是环境变量的问题。
如果环境变量没问题,可以查看php读取的php.ini配置文件是否跟apache读取的php.ini文件一致。
通过在命令行下执行命令:php –ini
可以查看读取的php.ini配置文件的路径
比对phpinfo里面的ini路径:
发现apache读取的php.ini配置文件和php命令下读取的php.ini配置文件不是同一个。
于是打开php读取的php.ini配置文件,加入php_redis扩展,重启,即可解决。
非常感谢您的分享,解决了我的问题!