安装swoole 4后必须验证cli与fpm双环境php.ini配置一致且正确启用extension=swoole(pecl)或extension=swoole.so(源码编译),再通过php --ri swoole和协程测试确认功能可用,否则易出现class not found等运行时错误。

安装完 Swoole 4 后,关键不是“装上了”,而是“能用、用对、没踩坑”。验证和 php.ini 配置这两步看似简单,却是最容易出错的环节——比如扩展加载失败、CLI 和 Web 环境不一致、协程不可用等,往往都卡在这一步。
确认当前 PHP 使用的 php.ini 文件
PHP CLI(命令行)和 Web 服务(如 Nginx + PHP-FPM 或 Apache)通常使用不同的 php.ini。装完扩展后只改了其中一个,就会出现 php -m 看得见 swoole,但网页里 phpinfo() 找不到,或反之。
- 查 CLI 的配置文件:运行
php --ini | grep "Loaded Configuration File" - 查 FPM 的配置文件:运行
php-fpm -i | grep "Configuration File"或sudo php-fpm -t后看日志提示 - 查 Apache 下的配置:若用 mod_php,执行
php -r "phpinfo();" | grep "Loaded Configuration File"
正确写入 extension 配置项
PECL 安装和源码编译写法不同,写错就加载失败:
- PECL 安装(推荐新手):直接写
extension=swoole(不带.so),这是 PECL 2.0+ 的标准行为 - 源码编译安装:必须写完整路径或文件名,如
extension=swoole.so;如果指定了自定义扩展目录(如extension_dir="/usr/lib/php/20220829"),需确保swoole.so确实放在该目录下 - 不要加引号,不要写成
extension="swoole.so"或extension=/full/path/swoole.so(除非你明确需要绝对路径且路径正确)
验证是否真正加载成功
光看 php -m | grep swoole 不够,它只说明模块注册了,不代表功能可用:
- 运行
php --ri swoole:查看版本、编译参数、支持特性(如Coroutine、openssl、http2是否 enabled) - 检查协程是否可用:
php -r "var_dump(Swoole\Coroutine::create(function() { echo 'ok'; }));",无报错即基础协程正常 - 若用 FPM,重启后访问
phpinfo()页面,搜索 “swoole” 确认模块存在且版本匹配
常见失败原因与快速排查
遇到 “swoole not found” 或 “Class 'Swoole\Http\Server' not found”:
- php.ini 写错位置:确认修改的是 实际生效 的那个文件,而不是备份或模板文件
- 扩展名拼写错误:注意是
swoole,不是swool、Swoole或swoole.so(PECL 下) - PHP 版本不兼容:Swoole 4 要求 PHP ≥ 7.2.0;用
php -v核对 - 依赖缺失:如启用 HTTPS 却没装
libssl-dev(Debian)或openssl-devel(CentOS),会导致部分功能失效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











