解决:Mac OS编译安装php-openssl出错,error: Cannot find OpenSSL's /evp.h

本文详细记录了在Mac OS上编译安装php-openssl时遇到的'error: Cannot find OpenSSL's /evp.h'问题及其解决过程。通过修改配置文件、指定OpenSSL路径等步骤,成功解决问题并分享了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这条帖子之前我已经话费将近两天时间在这上面,主要是出于对mac的不熟悉

我百度过很多放法,都不适用于我的情况,基于mac下碰到这种情况的解决放法还是很少,现在解决了,特发一篇帖子分享一下

 

先说一下问题过程,再提我的解决放法(问题过程中包含我查的一般解决方法)

问题过程(涉及路径看个人电脑)

1、先进入PHP源码包:

cd ~/Downloads/php-5.6.24/ext/openssl

2、然后在该路径下执行phpize:

/usr/local/php5.6/bin/phpize

3、可能会报错:Cannot find config.m4. 其实该目录下面的config0.m4就是,所以将config0.m4改名为config.m4:

cp config0.m4 config.m4

4、改完之后再执行上个步骤:

/usr/local/php5.6/bin/phpize

5、接下来执行命令(每个人的路径不同)(/usr/local/Cellar/openssl/1.0.2r/为系统安装的openssl路径):

./configure --enable-openssl --with-openssl-dir=/usr/local/Cellar/openssl/1.0.2r/ --with-php-config
<think>好的,我现在需要帮助用户解决他们在运行`./configure`时遇到的错误:`invalid option "--openssl=/usr/bin/openssl"`。首先,我得弄清楚这个错误的原因。 用户提供的错误信息指出,`--openssl`是一个无效的选项。可能的情况是,OpenResty或Nginx的configure脚本并不支持这个选项。我需要回忆一下常见的配置选项,特别是与OpenSSL相关的。通常,`--with-openssl`用于指定OpenSSL的源码路径,而`--with-openssl-opt`用于指定编译选项。但用户这里使用的是`--openssl=/usr/bin/openssl`,这看起来像是想指定已安装OpenSSL二进制路径,但configure脚本并不接受这个参数,因此报错。 接下来,我需要验证这个假设是否正确。查阅OpenResty的官方文档或配置脚本的帮助信息,确认是否有`--openssl`这个选项。通常,正确的选项是`--with-openssl`后面跟源码目录,而不是二进制路径。用户可能混淆了这两个选项,或者误解了配置参数的作用。 用户可能的需求是想要指定系统已安装OpenSSL的位置,但正确的方法应该是确保开发库(如libssl-dev)已经安装,并且configure脚本能自动找到。或者,如果用户想使用特定版本的OpenSSL源码编译,应该使用`--with-openssl=/path/to/openssl/source`。 另一个可能性是用户在配置时参考了某些过时的文档或教程,导致使用了错误的选项。需要提醒用户检查官方文档,确保参数的正确性。 接下来,解决方案部分需要指出正确的选项,并指导用户如何正确配置OpenSSL。同时,需要检查他们的命令中是否存在其他拼写错误或无效选项,比如`--prefix=./nginx`中的路径是否需要使用绝对路径,或者是否有其他遗漏的依赖项。 此外,用户可能在之前的步骤中没有正确安装OpenSSL的开发包,导致configure脚本找不到相关依赖,从而尝试手动指定路径但使用了错误的参数。需要提醒用户安装必要的开发包,例如在Ubuntu上安装`libssl-dev`,在CentOS安装`openssl-devel`。 最后,需要给出一个完整的配置示例,确保用户能够正确执行configure命令,避免再次出现类似错误。同时,提醒用户在配置前清理之前的构建文件,避免旧的配置残留导致的问题。</think>### 错误分析 出现 `invalid option "--openssl=/usr/bin/openssl"` 的直接原因是:**`./configure` 脚本不支持 `--openssl` 参数**。该错误通常发生在以下场景中: 1. **参数拼写错误** OpenResty/Nginx 的标准参数为 `--with-openssl`(指向 OpenSSL 源码目录),而非 `--openssl`(指向二进制路径)。 2. **参数用法混淆** `--with-openssl` 用于指定 OpenSSL **源码路径**(需先下载源码),而 `/usr/bin/openssl` 是系统预装的 **二进制可执行文件路径**,二者不兼容。 3. **依赖缺失** 若未安装 OpenSSL 开发包(如 `libssl-dev`),即使路径正确也会报错。 --- ### 根本原因公式 $$ \begin{aligned} \text{错误} &= \text{无效参数} \ \&\&\ \text{依赖缺失} \\ \Rightarrow \quad & \text{Configure 参数语法错误} \\ \Rightarrow \quad & \text{OpenSSL 开发库未正确关联} \end{aligned} $$ --- ### 分步解决方案 #### 第一步:修复参数语法 **错误命令**: ```bash ./configure --prefix=./nginx --openssl=/usr/bin/openssl ... ``` **修正方案**: 1. **指定 OpenSSL 源码路径**(需提前下载解压): ```bash ./configure --prefix=/data/apps/or \ --with-openssl=/path/to/openssl_source \ # 其他必要参数... ``` 2. **或依赖系统 OpenSSL 开发包**(推荐): ```bash # 安装开发包(Ubuntu/Debian) sudo apt-get install libssl-dev # 安装开发包(CentOS/RHEL) sudo yum install openssl-devel # 配置时自动检测系统 OpenSSL ./configure --prefix=/data/apps/or \ --with-http_ssl_module \ # 其他必要参数... ``` --- #### 第二步:验证 OpenSSL 关联 ```bash # 检查 OpenSSL 头文件路径 ls /usr/include/openssl/ssl.h # 检查动态库路径 ldconfig -p | grep libssl.so ``` --- #### 第三步:完整配置示例 ```bash # 清理旧配置(关键!) make clean # 标准配置命令 ./configure \ --prefix=/data/apps/or \ --with-http_ssl_module \ --with-pcre \ --with-zlib \ --with-luajit=/data/apps/or/luajit \ --add-module=../ngx_http_redis_module \ # 其他模块... ``` --- ### 注意事项 1. **路径类型** `--with-openssl` 必须指向 **OpenSSL 源码目录**(如 `/usr/local/src/openssl-1.1.1w`),而非二进制文件。 2. **版本兼容性** OpenResty 对 OpenSSL 版本有要求,推荐使用 1.1.1 系列(长期支持版)。 3. **错误排查** 若仍报错,查看 `config.log` 文件末尾的详细错误描述: ```bash tail -n 50 ./build/nginx-1.27.1/objs/autoconf.err ``` --- ### 补充说明 若需强制使用系统预装 OpenSSL,可尝试通过环境变量指定: ```bash export OPENSSL_INC="/usr/include/openssl" export OPENSSL_LIB="/usr/lib/x86_64-linux-gnu" ./configure --prefix=... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值