必须彻底卸载再重装swoole扩展——先删.so文件、清理php.ini中所有swoole.so加载项、清除编译缓存和opcache,最后重启php-fpm,否则残留文件会导致“undefined function swoole_http_server”报错。

宝塔面板里Swoole扩展装错版本、启用了不兼容特性,或PHP升级后出现“undefined function swoole_http_server”报错,必须彻底卸载再重装——残留的.so文件、重复的extension=行、未清理的编译缓存,都会导致新安装失败或服务异常。
确认当前Swoole是否已启用
登录宝塔面板 →「PHP管理」→ 点击对应PHP版本的「设置」→「配置修改」,在打开的php.ini文件中搜索swoole,检查是否存在extension=swoole.so或extension="swoole.so"这类行。
同时打开终端执行:/www/server/php/81/bin/php --ri swoole(请将81替换为你实际的PHP版本号),若返回Extension 'swoole' not present,说明扩展未加载;若显示版本信息但功能异常,大概率是旧版残留干扰。
彻底删除Swoole扩展文件
第一步:定位当前PHP版本的扩展目录。在终端执行:/www/server/php/81/bin/php -r"print_r(get_cfg_var('extension_dir'));",输出类似/www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/的路径。
第二步:进入该目录,删除所有与Swoole相关的文件:rm -f swoole.so swoole_loader*.so。注意别误删其他扩展如redis.so或opcache.so。
【关键提醒】某些手动编译安装会生成带版本号的文件,例如swoole-5.1.5.so或swoole_dev.so,务必一并删除,否则重装后PHP可能加载旧文件而非新版。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
清理php.ini中的加载项
方法一:通过宝塔界面清理
在「PHP设置」→「配置修改」中,找到所有含swoole的行,逐行删除。重点检查三处:
① extension_dir下方紧邻的extension=行;
② 文件末尾手工追加的extension=swoole.so;
③ 被注释掉但未删除的;extension=swoole.so——注释≠失效,部分PHP版本仍会解析。
方法二:命令行强制清理(更彻底)
执行:sed -i '/swoole\.so/d' /www/server/php/81/etc/php.ini,这条命令会直接删掉php.ini里所有含swoole.so的行。注意:此操作不可逆,请先备份:cp /www/server/php/81/etc/php.ini /www/server/php/81/etc/php.ini.bak。
清除编译缓存与临时文件
进入Swoole源码编译目录(通常是/www/server/swoole-开头的文件夹),执行:rm -rf /www/server/swoole-*。若不确定路径,可用find /www/server -maxdepth 2 -name "swoole-*" -type d查找后逐一删除。
清空PHP的opcache缓存:在宝塔「PHP设置」→「服务」→「重载PHP配置」,或执行echo "<?php opcache_reset();?>" | /www/server/php/81/bin/php。
重启对应PHP版本的php-fpm服务:在宝塔界面点「服务」→「重启」,或终端执行service php-fpm-81 restart(版本号需匹配)。










