根本原因是CLI与FPM加载独立php.ini,必须双环境同步启用extension=swoole.so:先确认PHP 8.2路径及两套配置文件位置,再通过PECL安装并复制extension=swoole.so行,分别写入CLI的php.ini和FPM的配置(如www.conf或主php.ini),最后重启PHP服务并用php --ri swoole和phpinfo()双向验证。

宝塔面板中 PHP 8.2 环境安装 Swoole 后,Web 页面(FPM)能调用但命令行(CLI)报 Class 'Swoole\Server' not found,或反之;根本原因是 CLI 和 FPM 加载了两套独立的 php.ini 配置文件,extension=swoole.so 只写进了一个,另一端完全不生效——必须双环境同步启用才能保障 Laravel/Swoole HTTP 服务、WebSocket 启动脚本、artisan 命令等全链路正常运行。
确认当前 PHP 版本与路径
先用 SSH 登录服务器,执行:/www/server/php/82/bin/php -v,确保输出含 PHP 8.2.x 字样;若显示其他版本(如 81 或 74),说明你操作的是错误 PHP 环境,后续所有步骤都将失效。
这一步不能跳过。宝塔面板里可能装了多个 PHP,但 Swoole 必须和实际项目使用的版本严格一致。
再执行:/www/server/php/82/bin/php --ini,记录输出中 “Loaded Configuration File” 对应的路径,这是 CLI 的 php.ini 位置;同时记下 “Scan for additional .ini files in” 后面的目录,FPM 通常从该目录下加载额外配置。
通过 PECL 一键安装 Swoole(推荐路径)
只要服务器能连外网且已装编译工具,PECL 是最稳的选择:它自动匹配 PHP 8.2 头文件、ABI 版本和 php-config 路径,比手动下载源码更少出错。
执行:yum install -y gcc gcc-c++ make autoconf(CentOS/RHEL)或 apt install -y build-essential autoconf(Ubuntu/Debian)。
运行:/www/server/php/82/bin/pecl install swoole。
安装过程中会交互询问是否启用 http2、openssl、sockets 等特性,按需输 y 或直接回车跳过默认项即可。
安装成功后终端最后一行必定输出 extension=swoole.so ——必须完整复制这一整行,后续配置全靠它。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
双环境 php.ini 同步写入扩展
CLI 环境配置:
编辑:vi /www/server/php/82/etc/php.ini,翻到文件末尾,在 ; extension=xxx 区域之后新增一行,粘贴刚才复制的 extension=swoole.so。
FPM 环境配置:
宝塔中 FPM 使用的不是同一份 php.ini。打开宝塔面板 → PHP 82 设置 → 配置文件,找到 php_admin_value[extension] 所在行(通常在 www.conf 或 php-fpm.d 目录下),在其下方新增 extension=swoole.so;如果找不到该行,就直接在主 php.ini(即 /www/server/php/82/etc/php.ini)末尾加——宝塔 FPM 默认也会读取此文件。
注意:只改一个配置文件,另一个环境必然失效。Web 请求用 FPM,artisan/swoole start 命令走 CLI,二者缺一不可。
重启 PHP 服务并验证双环境
第一步:在宝塔面板 PHP 82 设置页,点击「重启 PHP」按钮(不是「重载配置」);重载不会重新加载新扩展,会导致 php -m 仍看不到 swoole。
第二步:验证 CLI 环境:/www/server/php/82/bin/php --ri swoole,输出含 enabled 和版本号即成功。
第三步:验证 FPM 环境:在网站根目录新建 info.php,内容为 <?php phpinfo(); ?>,浏览器访问该文件,搜索 swoole,确认状态为 enabled。
两个验证都通过,才算真正完成双环境配置。

















