在 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
- 添加扩展 tap(推荐)
- Homebrew 的默认 PHP 包不包含所有扩展,但
shivammathur/extensions
tap 提供了预编译的redis
扩展:bash brew tap shivammathur/extensions
- 安装
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
- 验证安装
- 检查
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
- 如果没有
- 重启 PHP 服务(可选)
- 如果使用 PHP-FPM:
bash brew services restart php
方法 2:通过 PECL 安装 redis
如果 Homebrew 的 redis
扩展安装失败或不适用,可以使用 PECL:
- 更新 PECL 通道
pecl update-channels
pecl clear-cache
- 安装
redis
扩展
pecl install redis
- 如果遇到依赖问题(如
pcre2.h
或libzstd
),先安装: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
- 然后设置环境变量(如果未在
- 配置
php.ini
或conf.d
- PECL 安装后会提示添加
extension=redis.so
。手动添加到conf.d
:bash echo "extension=redis.so" > /opt/homebrew/etc/php/8.4/conf.d/ext-redis.ini
- 或编辑
php.ini
:bash nano /opt/homebrew/etc/php/8.4/php.ini
- 添加:
ini extension=redis.so
- 添加:
- 验证安装
php -m | grep redis
- 应输出
redis
。
安装 Redis 服务器(可选)
- 如果您的 Workerman 项目需要连接 Redis 服务器,先安装 Redis:
brew install redis
- 启动 Redis:
brew services start redis
- 验证 Redis 运行:
redis-cli ping
- 应输出
PONG
。
测试 Workerman
- 确保
pcntl
和posix
扩展启用(Workerman 必需):
php -m | grep -E 'pcntl|posix'
- 应输出
pcntl
和posix
。 - 运行 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 扩展与 Workerman:
redis
扩展用于连接 Redis 服务器(如缓存或消息队列)。确保您的 Workerman 脚本需要redis
(例如使用Redis
类)。如果不需要,安装后无需修改start_http.php
。 - 权限:确保
/opt/homebrew
可写:
sudo chown -R $USER:staff /opt/homebrew
- Homebrew 健康:
brew doctor
brew update && brew upgrade
- 清理旧配置:如果仍有其他扩展警告(如
curl
、gd
),重复清理php.ini
和conf.d
中的无效extension=
行。