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
大概会输出类似于下边这样的信息
如果有这个东西,基本上你就安装了这个东西了,没有的话尝试安装一下。
找到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 时使用的