php安装swoole扩展开启openssl报错问题.md

首页 / 正文

macOS中pecl方式安装swoole报Enable openssl support, require openssl library错误

安装swoole命令

pecl install swoole

如果需要开启openssl的话,在下边的提示中输入yes

enable openssl support? [no] : # 询问是否启用openssl

但是我用macos安装的时候,出现了报错 fatal error: 'openssl/ssl.h' file not found

网上找了找解决方案,结合好几篇文章的整理以及新测安装解决方案如下。

如果你也用的macos的话,可以使用brew命令查看openssl的位置

brew info openssl

大概会输出类似于下边这样的信息

image-20221216092347635.png

如果有这个东西,基本上你就安装了这个东西了,没有的话尝试安装一下。

找到openssl路径之后我们重新编译安装一下swoole,在提示openssl时追加openssl的位置信息

enable openssl support? [no] :yes --with-openssl-dir=/opt/homebrew/Cellar/openssl@1.1/1.1.1k/

然后让他执行下一步就好了。

扩展知识

swoole 编译参数

通用参数

—enable-openssl

启用 SSL 支持

使用操作系统提供的 libssl.so 动态连接库

—with-openssl-dir

启用 SSL 支持并指定 openssl 库的路径,需跟上路径参数,如: —with-openssl-dir=/opt/openssl/

—enable-http2

开启对 HTTP2 的支持

依赖 nghttp2 库。在 v4.3.0 版本后不再需要安装依赖,改为内置,但仍需要增加该编译参数来开启 http2 支持

—enable-swoole-json

启用对 swoole_substr_json_decode 的支持

依赖 json 扩展,v4.5.7 版本可用

—enable-swoole-curl

启用对 SWOOLE_HOOK_NATIVE_CURL 的支持

v4.6.0 版本可用。如果编译报错 curl/curl.h: No such file or directory,请查看安装问题

—enable-cares

启用对 c-ares 的支持, 一个C语言的异步DNS解析库

依赖 c-ares 库,v4.7.0 版本可用。如果编译报错 ares.h: No such file or directory,请查看安装问题

特殊参数

如无历史原因不建议启用

—enable-mysqlnd

启用 mysqlnd 支持,启用 Coroutine\MySQL::escapse 方法。启用此参数后,PHP 必须有 mysqlnd 模块,否则会导致 Swoole 无法运行。

依赖 mysqlnd 扩展

—enable-sockets

增加对 PHP 的 sockets 资源的支持。开启此参数,Swoole\Event::add 就可以添加 sockets 扩展创建的连接到 Swoole 的事件循环中。
Server 和 Client 的 getSocket() 方法也需要依赖此编译参数。

依赖 sockets 扩展,v4.3.2 版本后该参数的作用被削弱了,因为 Swoole 内置的 Coroutine\Socket 可以完成大部分事情

Debug 参数

生产环境不可以启用

—enable-debug

打开调试模式。使用 gdb 跟踪需要在编译 Swoole 时增加此参数。

—enable-debug-log

打开内核 DEBUG 日志。(Swoole 版本 >= 4.2.0)

—enable-trace-log

打开追踪日志,开启此选项后 swoole 将打印各类细节的调试日志,仅内核开发时使用

PHP 编译参数

—enable-swoole

静态编译 Swoole 扩展到 PHP 中

此选项是在编译 PHP 而不是 Swoole 时使用的

无标签
打赏
评论区
头像