我收到错误:致命错误:在 mac m1 中为 laravel 项目安装 mongodb 时找不到“openssl/sha.h”文件

我收到错误:致命错误:在 mac m1 中为 laravel 项目安装 mongodb 时找不到“openssl/sha.h”文件
 nssl.c:24:10: fatal error: 'openssl/sha.h' file not found
 #include <openssl/sha.h>
     ^~~~~~~~~~~~~~~
 1 error generated.
 make: *** [src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.lo] Error 1
 ERROR: `make' failed

我的操作系统详细信息是:

ProductName:        macOS
ProductVersion:     14.3
BuildVersion:       23D56

unix variant
local 23.3.0 Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:27 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T8103 x86_64

php version : PHP 8.2.4 

我发出终端命令:sudo pecl install mongodb

这是来自这个网站: MongoDB PHP 驱动程序

我的安装因以下错误而停止:

 nssl.c:24:10: fatal error: 'openssl/sha.h' file not found
 #include <openssl/sha.h>
     ^~~~~~~~~~~~~~~
 1 error generated.
 make: *** [src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.lo] Error 1
 ERROR: `make' failed

我从以下位置找到了解决方法:Mac OSX 致命错误:找不到“openssl/sha.h”文件

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

引用一条评论:

Apple 不久前(在 OS X 10.7 中)弃用了其 OpenSSL 共享库。这是因为 OpenSSL 不提供版本间的二进制兼容性,因此我们无法在不破坏所有现有客户端的情况下将共享库更新到最新的 OpenSSL。

但我什至在我的 mac 中没有包含文件夹...请帮助

which openssl我通过在终端中 执行操作获得了 openssl 的路径-/opt/homebrew/bin/openssl

正在做

    % ls -l /opt/homebrew/bin/openssl 

    lrwxr-xr-x  1 janammaharjan  admin  37 Feb  7 22:12 
    /opt/homebrew/bin/openssl -> ../Cellar/openssl@3/3.2.1/bin/openssl

答案1

正确的解决方案

让我们重新开始并使用 PHP、Laravel 和 MongoDB 扩展的官方安装方法。毕竟,您应该拥有一个可工作的本机 MAMP 服务器用于开发。


脚步

这些步骤假设我们想要使用自制原生地满足我们在开发环境中所需的一切,同时保持所需工具的 macOS 版本的原始状态。

  1. 安装 Homebrew(为了完整起见,您已经完成了此操作):
    • /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"-一班轮
  2. 安装 Node.js/npm:
    • brew install node
  3. 在 Homebrew 的存储库中安装最新的 PHP:
    • brew install php-如果您需要不同的版本,请使用设置标识符@。前任:brew install [email protected]
  4. 安装 Composer 进行依赖管理:
    • curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer-一班轮
  5. 验证安装
    • php --version composer --version
  6. 安装 Laravel - 这将由 Composer 管理,不会影响日常使用:
    • composer global require laravel/installer
  7. 创建一个空项目:
    • composer create-project --prefer-dist laravel/laravel <app-name>-请务必将 app-name 替换为您的项目名称
  8. 验证项目启动
    • php artisan serve-检查您在端口 8000 上设置的任何 IP 地址的浏览器

参考:如何在 macOS 上安装 Laravel

上述步骤确保此答案和您的问题现在从同一位置开始:

添加 MongoDB

引用自MongoDB 文档:安装 MongoDB PHP 库:

笔记:

如果任一安装方法的构建过程都无法找到 TLS 库,请检查开发包(例如 libssl-dev)和 pkg-config 是否均已安装。

由于您的问题引用了此注释,让我们用以下方法修复它:

  1. brew install libssl-dev && brew install pkg-config

解释

libssl-dev包包含缺少的头文件。安装在 Homebrew Cellar 中的包pkg config/脚本将搜索库中也安装在 Cellar 中的包。 它不会报告 Homebrew 之外的库路径。安装这 2 个软件包后,pecl命令应按照以下方式完成MongoDB Laravel 集成

相关内容