XAMPP默认不带Swoole扩展,需手动源码编译安装:先确认PHP路径与版本,用XAMPP自带phpize和php-config配置,macOS M1/M2须加arch -x86_64前缀,编译后将swoole.so写入正确extension_dir并在/Applications/XAMPP/etc/php.ini中添加extension=swoole.so,最后分别验证CLI和Web层并重启Apache。
XAMPP 默认不带 Swoole 扩展,必须手动安装才能支持 WebSocket、TCP 服务等异步网络通信能力。直接启用
会失败,因为 XAMPP 的 PHP 编译路径、扩展目录和系统依赖都与标准 Linux 发行版不同,尤其在 macOS(M1/M2)或老旧 macOS 上更容易出错。
确认 XAMPP 中的 PHP 路径和版本
别急着下载源码或运行
,先搞清你实际用的是哪个 PHP —— XAMPP 常存在「CLI 用一个 PHP,Apache 用另一个」的问题。
打开终端,执行:
和
,看输出是否一致
检查扩展目录位置:
,注意它指向的路径(常见如
)
macOS M1/M2 用户必须加
前缀调用工具,否则编译出的
无法加载(报错:
)
源码编译安装(推荐,兼容性最强)
PECL 在 XAMPP 下基本不可用,
会找不到
或写入错误路径。必须用 XAMPP 自带的工具链编译。
Swoole 6.1.1
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
下载
下载对应版本源码(例如
),解压后进入目录
执行:
(macOS M1/M2)或
(Intel/macOS 旧版)
配置时严格指定 XAMPP 的
:
,成功后会提示
安装到了哪个目录 —— 必须和上一步
输出路径一致
编辑
(不是
!XAMPP for Mac 的主配置在此),末尾添加:
验证是否真正生效
重启 Apache 不够,XAMPP 的 CLI 和 Web 环境是分离的,得分别验证:
命令行验证:
,看到
和版本号才算 CLI 层 OK
Web 层验证:建一个
,内容为
,浏览器访问,搜索 “
swoole
”,确认模块已加载且版本匹配
常见失败现象:
有输出但
没显示 → 说明 CLI 和 Web 使用了不同
,需检查 Apache 加载的是哪个配置文件(
页面顶部明确写出)
最易被忽略的一点:XAMPP 的 Apache 启动时不会自动重载
修改,改完必须点面板上的「重启 Apache」按钮(不是「重载配置」),否则
形同虚设。
swoole.sophpize/Applications/XAMPP/bin/php -v/Applications/XAMPP/xamppfiles/bin/php -v/Applications/XAMPP/bin/php -i | grep extension_dir/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20200930/arch -x86_64swoole.somach-o, but wrong architecturepecl install swoolephp-configswoole-5.1.5.tgzarch -x86_64 /Applications/XAMPP/bin/phpize/Applications/XAMPP/xamppfiles/bin/phpizephp-config./configure --with-php-config=/Applications/XAMPP/bin/php-config --enable-opensslmake && sudo make installswoole.soextension_dir/Applications/XAMPP/etc/php.inixamppfiles/etc/php.iniextension=swoole.so/Applications/XAMPP/bin/php --ri swooleenabledinfo.phpphp -m | grep swoolephpinfo()php.iniphpinfo()php.iniextension=swoole.so