pecl install swoole卡在downloading是因https握手失败或phpize不可用;需检查openssl证书路径并补全ca包,或换清华源;若已下载完却无响应,应验证phpize是否在path中且版本匹配。

pecl install swoole 卡在 downloading 或 fetching 阶段
这不是网络慢,而是 PECL 客户端根本连不上源服务器——常见于证书失效、DNS 污染或通道被重定向。它不会报错,就停在 downloading swoole-5.x.x.tgz 那一行不动,Ctrl+C 后再试还一样。
先确认是不是证书问题导致 HTTPS 握手失败
PECL 依赖 OpenSSL 发起 HTTPS 请求,若系统 CA 证书缺失或过期,就会静默卡住。运行:
php -r "print_r(openssl_get_cert_locations());"
检查 default_cert_file 路径是否存在且可读。常见失效路径如 /usr/local/openssl/cert.pem(空文件或根本不存在)。
- 若路径为空或文件不存在:用
wget -c https://curl.haxx.se/ca/cacert.pem -O /usr/local/openssl/cert.pem --no-check-certificate补全 - 若路径指向 Homebrew 的 OpenSSL(如
/opt/homebrew/etc/openssl@3/cert.pem),需确保该路径真实存在且权限正确 - 别改 PHP 源码或硬编码证书路径——PECL 只认
openssl_get_cert_locations()返回的默认位置
国内用户直接换清华镜像源最省事
跳过证书排查,三行命令解决卡顿:
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
pecl config-set channel_mirror https://mirrors.tuna.tsinghua.edu.cn/pecl/ pear clear-cache pecl update-channels
之后再跑 pecl install swoole,下载速度和成功率会明显提升。注意:这个配置是全局生效的,不影响其他 PECL 扩展安装。
卡在 downloading 但实际已下完,却没进入编译阶段
这是 PECL 2.0+ 的一个隐藏行为:它把下载包解压到临时目录后,会尝试调用 phpize,如果 phpize 不在 $PATH 或版本不匹配,就会假死在“下载完成”之后,终端无任何提示。
- 手动验证:
/www/server/php/82/bin/phpize --version(替换为你实际 PHP 版本路径),确保能正常输出 - 别依赖系统默认
phpize:宝塔环境下必须用对应子目录下的完整路径,比如/www/server/php/82/bin/phpize - 如果
phpize报command not found,说明 PHP 开发包没装全,需补php-devel(CentOS)或php-dev(Ubuntu)
真正容易被忽略的是:卡住时你看到的“正在下载”,可能已经完成了下载,只是后续步骤失败了——得看日志末尾有没有 running: phpize 或 configure: error 这类线索,而不是只盯着进度条。










