在MacOS Sierra上找不到OpenSSL

时间:2017-02-04 18:51:39

标签: php mongodb macos openssl macos-sierra

我正在尝试安装PHP MongoDB驱动程序,但安装失败,因为它无法找到OpenSSL。

/Users/janisozolins/mongo-php-driver/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c:24:10: fatal error: 'openssl/sha.h' file not found
#include <openssl/sha.h>
         ^
1 error generated.
make: *** [src/libmongoc/src/mongoc/mongoc-crypto-openssl.lo] Error 1

我读到这与最新版本的MacOS有关?有没有办法做到这一点,因为我真的需要安装这个驱动程序。

4 个答案:

答案 0 :(得分:5)

您需要使用homebrew安装OpenSSL,并告诉自制程序创建必要的符号链接:

brew install openssl
brew link openssl --force

如果您还没有安装自制软件,可以通过以下方式获取它:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

在此之前,如果您还没有安装XCode和XCode命令行工具:

xcode-select --install

答案 1 :(得分:5)

这是唯一对我有用的解决方案。

cd /usr/local/include 
ln -s ../opt/openssl/include/openssl .

来源:https://www.anintegratedworld.com/mac-osx-fatal-error-opensslsha-h-file-not-found/

答案 2 :(得分:1)

您可以使用环境变量C_INCLUDE_PATH告诉编译器包含openssl头文件的路径。

例如,如果你只想做一次:

sudo C_INCLUDE_PATH=/usr/local/opt/openssl/include pecl install mongo

参考:charles.lescampeurs.org

答案 3 :(得分:1)

首先使用 brew 安装 libressl

brew install libressl

然后运行以下命令:

export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/lib \
-L/usr/local/opt/expat/lib" && export CFLAGS="-I/usr/local/opt/openssl/include/ \
-I/usr/local/include -I/usr/local/opt/expat/include" && export \
CPPFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include \
-I/usr/local/opt/expat/include"