第一步需确认php版本、ts/nts类型及系统架构,三者必须与swoole dll严格匹配,否则扩展无法加载;通过php -v、php -i | findstr "thread safety"和任务管理器查清参数后,再下载对应vc编译版本的dll并正确配置php.ini。

确认PHP版本和TS/NTS类型是第一步
Windows下Swoole扩展必须严格匹配PHP版本、线程安全(TS/NTS)和架构(x86/x64),错一个就php -m看不到swoole,也进不了phpinfo()。别跳过这步直接下DLL。
- 打开XAMPP控制面板 → 点击Apache右侧的
Config→ 选PHP (php.ini),在文件开头找PHP Version行,或直接运行C:\xampp\php\php.exe -v - 执行
C:\xampp\php\php.exe -i | findstr "Thread Safety",输出enabled即TS,disabled即NTS - 查系统位数:任务管理器 → 性能 → CPU → “系统类型”是x64还是x86;再看XAMPP安装目录里
php\php.exe属性 → 详细信息 → “平台”字段
下载并放置正确的php_swoole.dll
PECL官网已不再提供Windows二进制包,必须从windows.php.net/pecl下载对应版本的DLL。用错源等于白装。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
- 例如:XAMPP含PHP 8.1.22 NTS x64 → 下载
swoole-5.1.3-8.1-nts-vc15-x64.zip(注意vc15对应VS2019编译,XAMPP 8.1默认用它) - 解压后取
php_swoole.dll,放入C:\xampp\php\ext\(不是apache\bin\,也不是php\根目录) - 别改DLL文件名,也别加版本号后缀——
extension=swoole依赖这个原始名
修改php.ini并验证加载
扩展没生效,八成卡在php.ini配置或服务未重载。XAMPP有两个php.ini:Apache用的是\xampp\apache\conf\extra\phpini.conf引入的那个,但实际编辑的是\xampp\php\php.ini(XAMPP控制面板里“Config → PHP (php.ini)”打开的就是它)。
- 用记事本或VS Code打开
C:\xampp\php\php.ini,搜索;extension=swoole,去掉分号;若无此行,就在;extension=openssl这类扩展下方新增一行:extension=swoole - 确保
extension_dir指向正确路径,例如:extension_dir = "C:\xampp\php\ext"(路径里不能有中文或空格) - 重启Apache:XAMPP控制面板中先
Stop再Start,不是“Restart”——后者有时不重读php.ini - 验证命令:
C:\xampp\php\php.exe -m | findstr swoole,有输出即加载成功;C:\xampp\php\php.exe --ri swoole可看详细版本和特性开关
Swoole在XAMPP里跑不起来?检查CLI和Web环境差异
XAMPP默认只让Apache加载扩展,而php -S或命令行脚本用的是同一份php.ini,但某些旧版XAMPP会为CLI单独生成php-cli.ini。如果你写了个swoole_http_server脚本却报Class 'Swoole\Http\Server' not found,大概率是CLI没加载扩展。
- 运行
C:\xampp\php\php.exe --ini,看Loaded Configuration File路径是否和你编辑的php.ini一致;若显示php-cli.ini,那就得同步改那个文件 - Windows下Swoole不支持
fork模式,process_mode只能用SWOOLE_PROCESS或SWOOLE_BASE,别照Linux教程设SWOOLE_SPAWN -
phpinfo()页面里搜swoole,确认version、epoll(Windows显示select)、async_redis等关键项存在,缺失说明编译选项不对或DLL损坏
php.ini作用域、CLI/Web双环境。漏掉任一环,extension=swoole就只是ini里的一行注释。










