0

0

Swoole安装依赖包缺失怎么办_Swoole依赖安装补救【技巧】

絕刀狂花

絕刀狂花

发布时间:2026-03-11 21:45:04

|

589人浏览过

|

来源于php中文网

原创

根本原因是编译swoole时缺失关键依赖(如php-dev、openssl-devel、libcurl-devel等),导致configure静默跳过扩展生成,make install未安装任何文件;需先装开发包再显式指定路径。

swoole安装依赖包缺失怎么办_swoole依赖安装补救【技巧】

找不到 swoole 扩展,php -m 里没它

根本原因不是“没装 Swoole”,而是编译时缺了关键依赖,导致 make 静默跳过扩展生成,最后 make install 什么也没装进去。常见现象是执行完安装脚本,php --ri swoole 报错 “Extension 'swoole' not found”,但 php -m 里也压根没有这一行。

实操建议:

  • 先运行 phpize --version 确认有 PHP 开发头文件(php-devphp-devel 包);没这个,./configure 直接失败或降级为不编译扩展
  • 检查是否装了 gccmakeautoconfautomake —— Ubuntu/Debian 下用 apt list --installed | grep -E "gcc|make|autoconf" 快速扫一遍
  • CentOS/RHEL 7+ 必须额外装 openssl-devellibnghttp2-devel,否则 HTTP/2 和 TLS 支持直接丢弃,且不报错
  • 如果用的是 PHP 8.2+,Swoole 5.0.3 之前版本会因 ZTS 兼容问题静默编译失败,建议直接上 swoole-5.1.0+

./configureerror: Cannot find OpenSSL's <evp.h></evp.h>

这不是 OpenSSL 没装,而是开发头文件路径没被自动识别。系统装了 openssl 命令,但没装 openssl-devel(RHEL/CentOS)或 libssl-dev(Debian/Ubuntu),configure 就找不到 evp.hssl.h 这些头文件。

实操建议:

  • RHEL/CentOS:运行 yum install openssl-develdnf install openssl-devel
  • Debian/Ubuntu:运行 apt install libssl-dev
  • 若已装但 configure 仍找不到,加显式参数:./configure --with-openssl-dir=/usr/include/openssl(路径按 find /usr -name evp.h 2>/dev/null 结果调整)
  • 别用 --without-openssl 绕过——Swoole 的 Co\HTTP\ClientWebSocketSSL context 全依赖它,禁用等于废掉一半功能

编译通过但 php --ri swoole 显示 undefined symbol: OPENSSL_sk_num

这是典型的 OpenSSL 版本错配:PHP 编译时链接的是 OpenSSL 1.1.x,而 Swoole 编译时找到的是系统默认的 OpenSSL 3.0+(或反过来)。符号名变了,运行时动态链接就崩。

一帧秒创
一帧秒创

基于秒创AIGC引擎的AI内容生成平台,图文转视频,无需剪辑,一键成片,零门槛创作视频。

下载

实操建议:

  • 查 PHP 实际链接的 OpenSSL:php-config --ldflags | grep ssl,再看 ldd $(php-config --extension-dir)/swoole.so | grep ssl
  • 统一用系统包管理器装的 OpenSSL,别混用源码编译版。例如 Ubuntu 22.04 默认 OpenSSL 3.0,但 PHP 8.1 是用 1.1 编译的,此时必须给 Swoole 指定旧路径:./configure --with-openssl-dir=/usr/lib/x86_64-linux-gnu
  • Mac 上用 Homebrew 装的 PHP 和 OpenSSL 更容易冲突,优先用 brew unlink openssl && brew install php 让 PHP 自带 OpenSSL

pecl install swoole 却卡在 checking for curl_multi_setopt

PECL 安装本质还是走 ./configure,但它会自动探测系统环境。这个卡点实际是 libcurl 开发包缺失,导致 cURL 功能检测失败,进而影响 Co\Curl 和部分 HTTP 客户端能力。

实操建议:

  • Debian/Ubuntu:装 libcurl4-openssl-dev(不是 libcurl3
  • RHEL/CentOS:装 libcurl-devel
  • 如果只是临时跳过 cURL 支持(不推荐),加参数:pecl install -f swoole --configureoptions '--without-curl'
  • 注意:跳过 cURL 后,Co\Curl 不可用,Co\Http\Client 的部分高级选项(如 follow_location)也会受限

最常被忽略的是:Swoole 编译过程不会明确告诉你“因为缺 xx,我关掉了 yy 功能”,它只在 config.log 末尾藏一句 checking for xxx... no。真要确认功能开关,得翻 config.log 或装完后跑 php --ri swoole | grep -E "(curl|openssl|http2)" 看实际启用项。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
swoole为什么能常驻内存
swoole为什么能常驻内存

swoole常驻内存的特性:1. 事件驱动模型减少内存消耗;2. 协程并行执行任务占用更少内存;3. 协程池预分配协程消除创建开销;4. 静态变量保留状态减少内存分配;5. 共享内存跨协程共享数据降低内存开销。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

306

2024.04.10

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

454

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

492

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

377

2023.10.25

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

6467

2023.07.31

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
swoole进程树解析
swoole进程树解析

共4课时 | 0.2万人学习

Swoole系列-从0到1-新手进阶
Swoole系列-从0到1-新手进阶

共29课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号