首页 > 文章列表 > 在Mac M2上使用brew安装PHP后手动编译安装php-redis,为什么phpinfo()中没有显示redis模块?

在Mac M2上使用brew安装PHP后手动编译安装php-redis,为什么phpinfo()中没有显示redis模块?

161 2025-03-20

在mac m2上使用brew安装的php手动编译安装php-redis后,phpinfo()中为什么没有显示redis模块?

在mac m2上使用brew安装php并手动编译安装php-redis后,用户发现尽管在命令行中通过php -m命令和php -r脚本确认redis模块已经正确安装和加载,但当尝试通过phpinfo()函数查看php配置时,redis模块却并未在页面上显示出来。用户已经确认在php.ini文件中添加了extension=redis的配置,并且通过php -i | grep loaded命令验证了配置文件路径正确。

问题的原因可能在于,当通过brew安装php时,默认的php配置文件路径和手动编译安装的扩展模块路径可能存在差异。具体来说,尽管在/opt/homebrew/etc/php/7.3/php.ini中添加了extension=redis,但如果redis模块的动态链接库(.so文件)不在php能够查找的路径中,php就无法正确加载该扩展。

为了解决这个问题,用户需要确保redis模块的动态链接库文件路径正确,并且在php的配置文件中正确指定该路径。以下是解决步骤:

  1. 确认redis模块的路径:在编译php-redis扩展时,动态链接库文件(如redis.so)通常会被编译到某个目录中。可以通过查找该文件的位置来确认,例如:

    find / -name "redis.so"

    假设找到的路径为/usr/local/lib/php/extensions/no-debug-non-zts-20180731/redis.so。

  2. 更新php.ini文件:编辑/opt/homebrew/etc/php/7.3/php.ini文件,确保extension指令指向正确的redis模块路径:

    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/redis.so
  3. 重启php服务:如果php通过某个服务运行(如apache或nginx),请重启该服务以确保新的配置生效。
  4. 验证:再次运行phpinfo(),应该能够在输出的页面中看到redis模块的相关信息。

通过上述步骤,用户应该能够在phpinfo()输出中看到redis模块,从而确认redis扩展已经成功加载并生效。

来源:1741915153