composer require swoole/swoole 不能配置运行路径,它仅拉取空包;Swoole 实际运行路径由 php.ini 中 extension=swoole.so(Linux/macOS)或 extension=php_swoole.dll(Windows)指定,且必须确保该 php.ini 是 php --ini 显示的已加载文件,路径、扩展名、PHP 版本兼容性均需严格匹配。

composer require swoole/swoole 不能配置运行路径
这个命令根本不会影响 Swoole 的运行路径,它只是拉取一个空的 Composer 包,不编译、不加载、不修改任何 PHP 环境。Swoole 的实际运行路径由 swoole.so(Linux/macOS)或 php_swoole.dll(Windows)二进制文件所在位置决定,而该路径在 php.ini 中通过 extension= 指令显式指定。
真正要配的路径只有 php.ini 里的 extension 行
必须确认你修改的是当前 CLI 或 FPM 实际加载的 php.ini 文件,而不是你以为的那个。常见错误包括:
-
php --ini显示的Loaded Configuration File路径,和你在宝塔/小皮/PHPStudy 里点开的 php.ini 不是同一个 -
extension=swoole.so写成了extension=swoole(缺.so),或写成绝对路径但路径不存在(如/usr/lib/php/20220829/swoole.so实际在/usr/lib/php/20230831/) - Linux 下用了 NTS 版 PHP 却加载了 TS 版
swoole.so,导致php --ri swoole报错但无明确提示
源码编译时的 --prefix 和 --with-php-config 才决定安装路径
如果你用源码编译而非 pecl install,那路径由以下两个参数控制:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
--prefix=/usr/local/swoole:指定make install后的根目录(一般不用改) -
--with-php-config=/usr/bin/php-config:关键!它决定了swoole.so最终被复制到哪个ext目录,也决定了phpize调用的头文件路径
多 PHP 版本共存时,/usr/bin/php-config 很可能指向 PHP 7.4,而你实际要用 PHP 8.2 —— 此时必须用完整路径,比如 /opt/php82/bin/php-config。
验证路径是否生效,只看 php --ri swoole 输出
别信 php -m | grep swoole,它只说明模块名被注册了;真正加载成功且路径正确,必须满足:
-
php --ri swoole有输出,且包含Version => 5.1.x和enabled - 输出中出现
Directive => Local Value行(说明 php.ini 已读取并生效) - 没有
Warning: PHP Startup: Unable to load dynamic library 'swoole.so'类错误
如果 php --ri swoole 失败,所有基于 Swoole 的 Composer 包(如 swooletw/laravel-swoole、topthink/think-swoole)都必然报 Class 'Swoole\Http\Server' not found —— 这不是 autoload 问题,是扩展根本没跑起来。

















