Swoole 4正常运行的核心是扩展加载成功:先确保PHP≥7.2、phpize和OpenSSL可用,再通过PECL(extension=swoole)或源码编译(extension=swoole.so)安装,最后精准修改CLI及FPM对应的php.ini并重启服务验证。

要让 Swoole 4 正常运行,核心是“扩展加载成功”——不是只装上,而是 PHP CLI 和 Web 环境(如 PHP-FPM)都能识别并调用 Swoole\Http\Server 这类类。很多新手卡在“明明装了却报 Class not found”,问题几乎都出在 php.ini 路径错、扩展名写错、或 OpenSSL 缺失。
确认基础环境是否达标
跳过这步,后续编译大概率失败或功能异常:
- 执行
php -v,确保 PHP ≥ 7.2(Swoole 4.8+ 已不支持 PHP 7.1 及更低版本) - 运行
phpize -v;若提示 command not found,需安装开发包:
• Ubuntu/Debian:`sudo apt install php-dev`
• CentOS/RHEL:`sudo yum install php-devel` - 检查 OpenSSL 是否启用:
php -r "echo extension_loaded('openssl') ? 'yes' : 'no';"
若输出 no,HTTPS、WSS、HTTP/2 将无法使用,建议安装libssl-dev(Debian)或openssl-devel(CentOS)后重装 Swoole
两种安装方式,按需选择
推荐新手用 PECL(省心、自动适配):
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
- 直接运行:
pecl install swoole - 过程中按回车接受默认选项即可
- 安装完成后,PECL 会提示你往 php.ini 写入
extension=swoole(注意:不是swoole.so)
需要定制或调试时选源码编译:
- 下载稳定版源码(如 v4.8.13):
wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.13.tar.gz - 解压并进入目录:
tar -xzf v4.8.13.tar.gz && cd swoole-src-4.8.13 - 执行:
phpize && ./configure --enable-openssl --enable-http2 && make -j$(nproc) && sudo make install - 编译成功后,终端会显示
swoole.so的存放路径(例如:/usr/lib/php/20220829/)
关键一步:启用扩展并精准验证
很多人在这里翻车——改错了 php.ini 文件。
- 先查 CLI 当前用的配置:
php --ini | grep "Loaded Configuration File" - 打开该文件,在末尾添加一行:
• PECL 安装 →extension=swoole
• 源码编译 →extension=swoole.so(路径可省略,前提是 .so 在 extension_dir 目录下) - 重启服务:
• CLI 不需重启,但 PHP-FPM 或 Nginx 必须重启:sudo systemctl restart php*-fpm
• 宝塔用户请点「PHP 设置」→「重载配置」或「重启服务」 - 验证是否生效:
•php -m | grep swoole→ 有输出即加载成功
•php --ri swoole→ 查看详细版本与启用状态(含协程、SSL 等特性开关)
常见问题快速排查
如果 php -m 看不到 swoole:
- 检查是否把
extension=写进了 Apache/Nginx 用的 php.ini,而 CLI 用的是另一个(宝塔中两者路径不同) - 确认扩展名拼写正确:
swoole≠swoole4≠php_swoole - Linux 下权限问题:确保
swoole.so文件可读(ls -l /path/to/swoole.so) - Windows 用户注意匹配 TS/NTS 和架构(x64/x86),DLL 必须与 phpinfo 显示的一致

















