configure报“cannot find openssl's ”需装openssl-devel(centos/rhel)或libssl-dev(ubuntu/debian),若已装则用find定位evp.h路径并显式传参--with-openssl-dir,禁用--without-openssl,且必须加--enable-openssl等开关启用功能。

configure 报错 “Cannot find OpenSSL's ” 怎么办
这不是 OpenSSL 没装,而是开发头文件缺失。系统自带 openssl 命令,但编译需要 evp.h 等头文件,它们在 openssl-devel(CentOS/RHEL)或 libssl-dev(Ubuntu/Debian)包里。
先确认是否真缺头文件:find /usr -name evp.h 2>/dev/null。如果没输出,就装对应开发包:
- CentOS/RHEL:运行
yum install -y openssl-devel或dnf install -y openssl-devel - Ubuntu/Debian:运行
apt-get install -y libssl-dev
装完仍报错?说明 configure 没自动找到路径,得显式传参:./configure --with-openssl-dir=/usr/include/openssl(路径以 find 结果为准)。千万别加 --without-openssl —— 否则 Co\Http\Client、WebSocket SSL、TLS context 全挂。
macOS 上 pecl install swoole 提示 “fatal error: 'openssl/ssl.h' file not found”
这是 Homebrew 安装的 OpenSSL 头文件没被编译器自动发现。macOS Catalina 及之后默认不把 /usr/local/include 加入搜索路径,而 pecl 编译时又硬依赖它。
别用 cp -R 硬拷贝头文件——后续升级 OpenSSL 就失效。正确做法是建符号链接:
- Intel Mac:
sudo ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl - Apple Silicon(M1/M2/M3):
sudo ln -s $(brew --prefix openssl@3)/include/openssl /usr/local/include/openssl(先运行brew --prefix openssl@3确认路径)
或者临时生效:在 pecl install swoole 前加环境变量:export CPPFLAGS="-I$(brew --prefix openssl)/include"。
pecl install 时提示 “enable openssl support? [no]”,输 yes 后报错
这个交互式提示其实是 pecl 在调用 ./configure 时触发的。输 yes 后它会尝试自动探测 OpenSSL 路径,失败就报错。关键是要在 yes 后**立刻追加路径参数**,格式必须严格:
-
yes --with-openssl-dir=/opt/homebrew/opt/openssl@3(Apple Silicon) -
yes --with-openssl-dir=/usr/local/opt/openssl(Intel Mac) - 路径必须是
brew --prefix openssl*输出的根目录,不能带/include或/ssl
输错格式(比如多空格、少 --、路径末尾多了斜杠)会导致 configure 忽略该参数,依然报找不到头文件。
php --ri swoole 显示 supports openssl disabled
即使 make install 成功、swoole.so 也写进扩展目录了,如果 php --ri swoole 输出里 Supports 下的 openssl 是 disabled,说明编译时根本没启用它——不是运行时问题,是 configure 阶段漏开关。
必须显式带上这些参数重新编译:
-
--enable-openssl(必加,否则不编译 SSL 相关代码) -
--enable-sockets(HTTP/WS 协程客户端依赖它) -
--enable-http2(如需 HTTP/2 支持) -
--enable-mysqlnd(如需Co\Mysql) -
--with-php-config=/path/to/php-config(确保指向你当前 PHP 版本的php-config)
最容易被忽略的是:不同 PHP 版本对 OpenSSL 库 ABI 兼容性敏感。PHP 8.1+ 推荐用 Swoole v5.0+;若用 v4.x,务必确认其官方支持列表是否含你的 PHP 小版本,否则即使路径对,也会在 make 阶段因类型定义不匹配而失败。










