跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

phpenv怎么安装Memcached phpenv配置缓存教程

phpenv 的 install 命令仅管理 PHP 版本,不支持安装扩展;memcached 扩展需手动编译,依赖 libmemcached 开发库,且 PHP 8.1+ 需额外处理 zlib/sasl 兼容性。 phpenv 本身不提供 Memcached 扩展安装能力,它只管理 PHP 版本;你要装的是
memcached
扩展(不是
memcache
),且必须手动编译,不能靠
phpenv install
一键搞定。 为什么 phpenv install memcached 会失败 phpenv 的
install
命令仅用于下载、编译、安装不同版本的 PHP 解释器(如 7.4、8.1、8.3),它不处理任何第三方扩展。Memcached 扩展依赖系统级库
libmemcached
,而 phpenv 不会自动拉取或编译它。 常见错误现象:
configure: error: not found libmemcached directory
或
undefined reference to memcached_* functions
根本原因:缺少
libmemcached
开发头文件(
libmemcached-dev
或
libmemcached-devel
) 如果你用的是 macOS + Homebrew,得先
brew install libmemcached
;Ubuntu/Debian 要
sudo apt-get install libmemcached-dev
;CentOS/RHEL 是
sudo yum install libmemcached-devel
手动编译 memcached 扩展的三步关键操作 假设你已用 phpenv 安装好目标 PHP 版本(比如
phpenv local 8.2.12
),现在要给它加上
memcached
扩展: 从 PECL 下载对应 PHP 版本兼容的扩展源码:
wget https://pecl.php.net/get/memcached-3.2.0.tgz
(注意:PHP 8.2+ 必须用 3.2.0 或更新版) 解压后进入目录,运行
phpize
—— 这里必须用当前 phpenv 激活版本的
phpize
,比如
~/.phpenv/versions/8.2.12/bin/phpize
执行
./configure --with-php-config=~/.phpenv/versions/8.2.12/bin/php-config --with-libmemcached-dir=/usr
(路径按你系统上
libmemcached
实际安装位置调整,Homebrew 通常是
/opt/homebrew/opt/libmemcached
) 最后
make && make install
,成功后会输出类似
Installing shared extensions: /Users/xxx/.phpenv/versions/8.2.12/lib/php/extensions/no-debug-non-zts-20220829/
启用扩展后验证是否生效 编译完只是生成了
memcached.so
,还没加载进 PHP。你需要手动配置
php.ini
: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; 确认当前生效的
php.ini
路径:
php --ini
,通常在
~/.phpenv/versions/8.2.12/etc/php.ini
在该文件末尾追加:
extension=memcached.so
重启 CLI 或 Web 服务(如果是 php-fpm,需
phpenv fpm-restart
或手动 kill + restart) 验证:
php -m | grep memcached
应该输出
memcached
;或者
php -r "new Memcached(); echo 'OK';"
不报错即成功 容易被忽略的兼容性陷阱 PHP 8.1+ 默认禁用
zlib
和
sasl
支持,而
memcached
扩展默认尝试链接它们。如果没装对应开发包,configure 阶段不会报错,但运行时调用
addServer()
可能静默失败或连接超时。 Ubuntu/Debian 上务必补全:
sudo apt-get install zlib1g-dev libsasl2-dev
macOS Homebrew 用户:
brew install zlib sasl2
,并在 configure 时显式关闭非必需功能:
--disable-memcached-sasl --disable-memcached-zlib
别混淆
memcached
(PECL 扩展,支持二进制协议、SASL、一致性哈希)和旧版
memcache
(已废弃,无 namespacing、无 CAS)

相关文章