phpenv 不管理扩展,Swoole 需为每个 PHP 版本单独编译安装并配置对应 php.ini;必须使用该版本的 phpize 和 php-config,指定绝对路径加载 swoole.so,切换版本后需重复操作。
本身不提供扩展管理能力,它只负责切换 PHP 版本和编译安装 PHP 解释器。Swoole 扩展必须在每个
管理的 PHP 版本下
单独编译安装
,否则即使版本切换成功,
也看不到
。
确认当前
php
env 管理的 PHP 版本路径与工具链
安装的 PHP 默认放在
下,但不同版本的
和
路径容易混淆,尤其当你用
编译过多个版本时:
检查当前激活版本:
(如输出
)
获取该版本完整路径:
→ 得到类似
立即学习
“
PHP免费学习笔记(深入)
”;
对应的
和
一定在同级
目录下:
常见错误:直接运行系统全局的
(来自系统 PHP 或其他版本),导致编译出的
无法被当前
版本加载。
用 phpenv 版本对应的 phpize 编译 Swoole
必须严格使用目标 PHP 版本自带的构建工具,不能混用:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
下载 Swoole 源码(以 v5.1.3 为例):
运行对应版本的
(关键!):
配置时指定准确的
:
编译安装:
成功后会输出类似:
记下这个路径 —— 后续要写进该 PHP 版本的
。
为 phpenv 版本单独配置 php.ini 并启用
swoole
.so
不自动创建或管理
,你得手动处理:
查找当前 PHP 使用的
路径:
→ 输出类似:
如果该文件不存在,复制默认模板:
编辑该
,在末尾添加:
注意:必须用
绝对路径
,不能写
—— 因为
版本没有标准扩展目录扫描逻辑,且
可能未设或指向错误位置。
验证是否生效:
切换 PHP 版本后 Swoole 不见了?这是正常现象
切换版本 = 切换整个 PHP 运行时环境,包括所有已编译的扩展。每个版本的
是独立编译、独立配置的。
你为
装好了,切到
后,
里必然没有
必须对
重复上述三步:用它的
编译、配它的
、指它的
绝对路径
最容易被忽略的是:忘记检查
输出的实际配置文件路径 —— 有些
安装方式会把
放在
,有些放在
下,路径不一致就会白配。
phpenvphpenvphp -mswoolephpenv~/.phpenv/versions/phpizephp-configphpenv installphpenv version8.1.20phpenv which php~/.phpenv/versions/8.1.20/bin/phpphpizephp-configbin/~/.phpenv/versions/8.1.20/bin/phpize~/.phpenv/versions/8.1.20/bin/php-configphpizeswoole.sophpenvwget https://www.php.cn/link/faf5f848713c920a20a582b87c75ef9dtar -zxvf v5.1.3.tar.gz && cd swoole-src-5.1.3phpize~/.phpenv/versions/8.1.20/bin/phpizephp-config./configure --with-php-config=~/.phpenv/versions/8.1.20/bin/php-config --enable-opensslmake && make installInstalling shared extensions: /home/user/.phpenv/versions/8.1.20/lib/php/extensions/no-debug-non-zts-20210902/php.iniphpenvphp.iniphp.iniphp --iniLoaded Configuration File: /home/user/.phpenv/versions/8.1.20/etc/php.inicp ~/.phpenv/versions/8.1.20/etc/php.ini.default ~/.phpenv/versions/8.1.20/etc/php.iniphp.iniextension=/home/user/.phpenv/versions/8.1.20/lib/php/extensions/no-debug-non-zts-20210902/swoole.soextension=swoole.sophpenvextension_dirphp -m | grep swoolephp --ri swoolephpenvswoole.so8.1.208.2.8php -mswoole8.2.8phpizephp.iniswoole.sophp --iniphpenvphp.inietc/lib/