【问题标题】:Using pecl to install the Mongodb driver on OS X El Capitan (v10.11.1)使用 pecl 在 OS X El Capitan (v10.11.1) 上安装 Mongodb 驱动程序
【发布时间】:2016-02-02 15:59:39
【问题描述】:

我正在尝试为 OS X 安装 php mongo 驱动程序。我尝试关注 these instructions 无济于事。

$ which pecl -> /usr/local/Cellar/php56/5.6.13_2/bin/pecl

$ sudo pecl install mongo -> 完整构建结果here 但问题是错误:

In file included from /private/tmp/pear/install/mongo/io_stream.c:34:
/private/tmp/pear/install/mongo/contrib/php-ssl.h:33:10: fatal error: 'openssl/evp.h' file not found
#include <openssl/evp.h>

我的 Xcode 命令行工具是最新的(可以肯定的是,我使用了 $ xcode-select --install)。

我知道如何解决这个问题。

【问题讨论】:

  • 为什么要否决我的问题?我已经研究过这个问题,但找不到 El Capitan 的解决方案。

标签: php xcode macos mongodb osx-elcapitan


【解决方案1】:

我建议使用http://phpbrew.github.io/phpbrew/ 处理这类事情。它让您可以轻松地将任何扩展安装到您需要的任何 php 版本。

在安装新版本的 php 时,我通常会在编译时留意日志。可能存在需要首先安装的依赖项。另外,请确保您安装了更新版本的自制软件。

【讨论】:

    【解决方案2】:

    我通过使用 Homebrew (as suggested here) 安装 OpenSSL 设法解决了这个问题:

    $ brew install openssl
    $ brew link openssl --force
    

    然后

    $ sudo pecl install mongodb
    

    【讨论】:

    • 值得注意的是 mongo 是不推荐使用的包名称;人们应该使用mongodb。强制 brew 链接也适用于较新的包 mongodb。谢谢!
    • @EzekielVictor 拯救了我的一天!
    • 当然……我现在提交了一个编辑来更新他的答案。可能一开始就应该这样做。
    • 这将不再起作用并且应该是不安全的。警告:拒绝链接:openssl 仅链接小桶 openssl 意味着您在使用 Homebrew 的 openssl 标头时可能最终链接到不安全、已弃用的系统 OpenSSL。相反,将完整的包含/库路径传递给您的编译器,例如:-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
    • @EzekielVictor 我更新到 mac os Sierra,当我尝试执行 brew install open ssl 时,它显示“警告:openssl-1.0.2j 已安装”,当我执行 brew link openssl --force 时再次显示它说“警告:拒绝链接:openssl 仅链接小桶 openssl 意味着您在使用 Homebrew 的 openssl 头文件时可能最终链接到不安全、已弃用的系统 OpenSSL。相反,将完整的包含/库路径传递给您的编译器,例如: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" 知道如何让它工作吗?
    【解决方案3】:

    您需要禁用 Mac OSX El Capitán 无根机制:

    1. 使用 Cmd-R 引导
    2. 打开终端
    3. 键入 csrutil 禁用
    4. 重启

    在Mac上,你需要安装Xcode,并为Xcode自带的openssl构建符号链接,即

    cd /usr/include;
    sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr/include/openssl
    

    【讨论】:

      【解决方案4】:

      这样做

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

      【讨论】:

      • 我已经有了 openssl 和 pkg-config,但仍然出现错误。这个解决方案对我有用。
      • 在用尽了所有其他在线可用的解决方案之后,这对我也有用。
      猜你喜欢
      • 2016-07-23
      • 2016-04-24
      • 2016-06-11
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2018-05-02
      • 2015-11-05
      相关资源
      最近更新 更多