必须在php.ini中写入swoole.so的绝对路径,否则PHP启动时报“unable to load dynamic library”;需同步修改CLI和FPM的配置文件,并重启PHP服务。

在宝塔面板中安装Swoole扩展时,若需将so文件存放到非默认路径(如统一归档到/www/extension_archive/或隔离测试环境),必须手动指定安装目录并同步更新php.ini中的绝对路径引用,否则PHP无法加载扩展。
通过源码编译自定义so存放路径
此方法适用于需要集中管理多个PHP版本扩展、规避默认路径权限冲突、或配合CI/CD流水线部署的场景。
第一步:进入Swoole源码目录后,执行phpize前先创建目标目录:mkdir -p /www/extension_archive/php80
第二步:调用PHP 8.0专属phpize工具:/www/server/php/80/bin/phpize
第三步:配置时显式指定扩展安装路径——关键参数--with-extension-dir不可省略:./configure --with-php-config=/www/server/php/80/bin/php-config --with-extension-dir=/www/extension_archive/php80
第四步:执行编译安装:make && make install
第五步:确认so文件已落至目标位置:ls -l /www/extension_archive/php80/swoole.so。若该路径下无此文件,说明--with-extension-dir未生效或路径拼写错误——【路径必须存在且PHP进程有读取权限】
pecl install方式强制指定so路径
pecl默认将so文件写入PHP内置扩展目录,但可通过环境变量覆盖该行为。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
方法一:临时设置PECL_EXT_DIR环境变量后安装
执行:PECL_EXT_DIR="/www/extension_archive/php82" /www/server/php/82/bin/pecl install swoole
方法二:安装完成后手动迁移so文件并修正路径引用
先运行/www/server/php/82/bin/pecl install swoole→安装完毕后执行:mv /www/server/php/82/lib/php/extensions/no-debug-non-zts-20220915/swoole.so /www/extension_archive/php82/→再编辑php.ini时使用绝对路径引用
php.ini中启用自定义路径的swoole.so
无论采用哪种安装方式,只要so文件不在PHP默认扩展目录,就必须在php.ini中写入完整绝对路径。
编辑CLI配置:vi /www/server/php/80/etc/php.ini,在文件末尾添加:extension=/www/extension_archive/php80/swoole.so
编辑FPM配置:打开/www/server/php/80/etc/php-fpm.d/www.conf,在[www]段落内追加:php_admin_value[extension] = /www/extension_archive/php80/swoole.so
注意:不能只写extension=swoole.so——【缺少路径前缀会导致PHP启动时报错“unable to load dynamic library”】
保存后,在宝塔面板中点击对应PHP版本右侧的「重启」按钮(非重载)

















