在 macos 上安装 xampp 的 mongodb 扩展

Gav*_*vyn 3 php xampp mongodb php-mongodb

我找了一晚上,也没找到解决办法。我尝试通过运行来安装 mongodb 扩展sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongodb ,但最后我收到此错误

fatal error: 'unicode/usprep.h' file not found
#include <unicode/usprep.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.lo] 
Error 1
ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)

Wad*_*ade 5

我遇到过同样的问题。我已经安装了icu4c开发人员工具以及我应该安装的所有东西。它应该有效..我对这个问题很困惑,为什么它不能编译。

问题是这样的:它试图使用icu4c位于 XAMPP 目录 ( /Applications/XAMPP/xamppfiles/bin) 中的文件。这是 XAMPP 附带的内容,而不是您刚刚安装的(或通过安装的brew install icu4c)。它使用了错误的二进制文件进行编译!

您可以通过执行以下操作来检查它从哪里拉出:which icuinfo

它应该类似于/usr/local/opt/icu4c/bin/icuinfo(路径可能会有所不同,我在 MacOS Catalina 上并使用自制程序安装)而不是/Applications/XAMPP/xamppfiles/bin。

我们大多数人都修改了$PATHXAMPP bin 目录,并且由于 icu4c 位于/usr/local/opt/icu4c/bin和/usr/local/opt/icu4c/sbin,因此不知道它的存在。这两个特定icu4c路径不在您要在其中搜索文件的位置的系统路径中。因此,要么 A) 它找不到它,要么 B) 它在 XAMPP bin 目录中找到它。

由于我们基本上已经icu4c安装在 2 个目录中,因此我们需要确保我们想要的目录位于我们的第一个目录中$PATH,并且位于 XAMPP 之前!

解决方案

您应该知道如何修改 $PATH。我使用 iTerm 和 zsh (oh-my-zsh) 仅供参考。

我还按照成功编译后的建议添加了LDFLAGS、CPPFLAGS和值。PKG_CONFIG_PATH

这是我的文件中的一个片段.zshrc:

# My cleaner way of organizing my paths
BIN=$HOME/bin
LOCAL_BIN=/usr/local/bin
HOMEBREW=/usr/local/sbin
COMPOSER=$HOME/.composer/vendor/bin
XAMPP=/Applications/XAMPP/bin
ICU4C_BIN=/usr/local/opt/icu4c/bin
ICU4C_SBIN=/usr/local/opt/icu4c/sbin

export PATH=$HOMEBREW:$COMPOSER:$ICU4C_BIN:$ICU4C_SBIN:$XAMPP:$BIN:$LOCAL_BIN:$PATH

export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"

export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
Run Code Online (Sandbox Code Playgroud)

显然,您可以忽略$HOMEBREW、$COMPOSER等,并根据需要应用。我只是将它们分开以获得干净且易于理解的 $PATH。老实说,我真的建议像上面那样组织和分离你的路径。它有很大帮助!