使用 Homebrew 为 PHP 安装 Redis 扩展

在 macOS 上使用 Homebrew 安装的 PHP(假设为 PHP 8.4.10,基于之前的上下文),但发现缺少 redis 扩展。本教程将指导您通过 Homebrew 或相关工具(如 PECL)为 PHP 安装 redis 扩展,并确保与 Workerman 环境兼容,同时解决之前的扩展加载警告问题(如 opcache)。

确认环境

  • PHP 版本:假设您使用 PHP 8.4(基于 /opt/homebrew/lib/php/pecl/20240924)。若不确定,运行:
  php -v
  • 输出应类似 PHP 8.4.10
  • Redis 扩展状态:检查是否已安装:
  php -m | grep redis
  • 如果无输出,确认 redis 未安装。
  • 配置文件路径
  php --ini
  • 通常为:
    • php.ini/opt/homebrew/etc/php/8.4/php.ini
    • 额外配置目录:/opt/homebrew/etc/php/8.4/conf.d

安装 Redis 扩展步骤

Homebrew 提供 php-redis 扩展包(或通过 shivammathur/extensions tap 安装),也可以使用 PECL。以下是两种方法的详细步骤。

方法 1:通过 Homebrew 安装 php-redis
  1. 添加扩展 tap(推荐)
  • Homebrew 的默认 PHP 包不包含所有扩展,但 shivammathur/extensions tap 提供了预编译的 redis 扩展:
    bash brew tap shivammathur/extensions
  1. 安装 php-redis
  • 为 PHP 8.4 安装 redis 扩展:
    bash brew install shivammathur/extensions/redis@8.4
  • 如果您使用其他 PHP 版本(例如 8.3),替换为:
    bash brew install shivammathur/extensions/redis@8.3
  1. 验证安装
  • 检查 redis 是否加载: bash php -m | grep redis
    • 应输出 redis
  • 如果未加载,Homebrew 通常自动在 /opt/homebrew/etc/php/8.4/conf.d 创建配置文件(如 ext-redis.ini)。确认: bash ls /opt/homebrew/etc/php/8.4/conf.d
    • 如果没有 ext-redis.ini,手动添加:
      bash echo "extension=redis.so" > /opt/homebrew/etc/php/8.4/conf.d/ext-redis.ini
  1. 重启 PHP 服务(可选)
  • 如果使用 PHP-FPM:
    bash brew services restart php
方法 2:通过 PECL 安装 redis

如果 Homebrew 的 redis 扩展安装失败或不适用,可以使用 PECL:

  1. 更新 PECL 通道
   pecl update-channels
   pecl clear-cache
  1. 安装 redis 扩展
   pecl install redis
  • 如果遇到依赖问题(如 pcre2.hlibzstd),先安装: bash brew install pcre2 zstd
    • 然后设置环境变量(如果未在 ~/.zshrc 中设置):
      bash export C_INCLUDE_PATH="/opt/homebrew/include:$C_INCLUDE_PATH" export LIBRARY_PATH="/opt/homebrew/lib:$LIBRARY_PATH"
    • 重新运行:
      bash CFLAGS="-I/opt/homebrew/include" LDFLAGS="-L/opt/homebrew/lib" pecl install redis
  1. 配置 php.iniconf.d
  • PECL 安装后会提示添加 extension=redis.so。手动添加到 conf.d
    bash echo "extension=redis.so" > /opt/homebrew/etc/php/8.4/conf.d/ext-redis.ini
  • 或编辑 php.inibash nano /opt/homebrew/etc/php/8.4/php.ini
    • 添加:
      ini extension=redis.so
  1. 验证安装
   php -m | grep redis
  • 应输出 redis
安装 Redis 服务器(可选)
  • 如果您的 Workerman 项目需要连接 Redis 服务器,先安装 Redis:
  brew install redis
  • 启动 Redis:
  brew services start redis
  • 验证 Redis 运行:
  redis-cli ping
  • 应输出 PONG

测试 Workerman

  • 确保 pcntlposix 扩展启用(Workerman 必需):
  php -m | grep -E 'pcntl|posix'
  • 应输出 pcntlposix
  • 运行 Workerman:
  php start_http.php start
  • 访问 http://127.0.0.1:2345 测试。
  • 守护进程模式:
    bash php start_http.php start -d php start_http.php status

注意事项

  • Redis 扩展与 Workermanredis 扩展用于连接 Redis 服务器(如缓存或消息队列)。确保您的 Workerman 脚本需要 redis(例如使用 Redis 类)。如果不需要,安装后无需修改 start_http.php
  • 权限:确保 /opt/homebrew 可写:
  sudo chown -R $USER:staff /opt/homebrew
  • Homebrew 健康
  brew doctor
  brew update && brew upgrade
  • 清理旧配置:如果仍有其他扩展警告(如 curlgd),重复清理 php.iniconf.d 中的无效 extension= 行。

发表评论

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 知差(chai)网 🐾 DeepracticeX 社区 🐾 老薛主机 🐾