php -m 与phpinfo显示的扩展不一致的问题

今天在学习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扩展,重启,即可解决。

 

《php -m 与phpinfo显示的扩展不一致的问题》上有1条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注