跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

phpenv如何配置Swoole扩展 phpenv Swoole实战环境搭建

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

相关文章