在 macOS 上为 xampp 安装 mongodb 扩展
install mongodb extension for xampp on macos
找了一晚上,也没找到解决办法。
我正在尝试通过 运行 sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongodb
安装 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
我遇到了同样的问题。我安装了 icu4c
、开发人员工具以及我应该安装的所有东西。它 应该 已经工作了。我一直在努力反对它为什么不能编译。
问题是这样的: 它试图使用位于 XAMPP 目录 (/Applications/XAMPP/xamppfiles/bin
) 中的 icu4c
文件。这是 XAMPP 附带的,而不是您刚刚安装的(或通过 brew install icu4c
安装的)。它使用了错误的二进制文件进行编译!
你可以通过以下方式检查它从哪里拉:which icuinfo
它应该类似于 /usr/local/opt/icu4c/bin/icuinfo
(路径可能会有所不同,我在 MacOS Catalina 上安装了自制软件)而不是 /Applications/XAMPP/xamppfiles/bin
。
我们大多数人都修改了我们的 $PATH
以包含 XAMPP bin 目录,并且由于 icu4c 位于 /usr/local/opt/icu4c/bin
和 /usr/local/opt/icu4c/sbin
,因此对其一无所知存在。这 2 个特定的 icu4c
路径不在您的系统搜索文件位置的路径中。所以要么 A) 它找不到它,要么 B) 它在 XAMPP bin 目录中找到那个.
因为我们基本上在 2 个目录中安装了 icu4c
,我们需要确保我们想要的那个在我们的 $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"
显然您可以忽略 $HOMEBREW
、$COMPOSER
等,并根据需要应用。我只是将它们分开以获得一个干净且易于理解的 $PATH。老实说,我真的建议像我上面那样组织和分离你的路径。帮了大忙!
在Mac,您首先需要安装icu4c:
$ brew install icu4c
$ brew link icu4c --force
然后修改您的 $PATH
以包含 icu4c
:
export PATH="/usr/local/opt/icu4c/bin:$PATH"
export PATH="/usr/local/opt/icu4c/sbin:$PATH"
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
最后为 php 安装 mongodb
驱动程序:
$ sudo pecl install mongodb
找了一晚上,也没找到解决办法。
我正在尝试通过 运行 sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongodb
安装 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
我遇到了同样的问题。我安装了 icu4c
、开发人员工具以及我应该安装的所有东西。它 应该 已经工作了。我一直在努力反对它为什么不能编译。
问题是这样的: 它试图使用位于 XAMPP 目录 (/Applications/XAMPP/xamppfiles/bin
) 中的 icu4c
文件。这是 XAMPP 附带的,而不是您刚刚安装的(或通过 brew install icu4c
安装的)。它使用了错误的二进制文件进行编译!
你可以通过以下方式检查它从哪里拉:which icuinfo
它应该类似于 /usr/local/opt/icu4c/bin/icuinfo
(路径可能会有所不同,我在 MacOS Catalina 上安装了自制软件)而不是 /Applications/XAMPP/xamppfiles/bin
。
我们大多数人都修改了我们的 $PATH
以包含 XAMPP bin 目录,并且由于 icu4c 位于 /usr/local/opt/icu4c/bin
和 /usr/local/opt/icu4c/sbin
,因此对其一无所知存在。这 2 个特定的 icu4c
路径不在您的系统搜索文件位置的路径中。所以要么 A) 它找不到它,要么 B) 它在 XAMPP bin 目录中找到那个.
因为我们基本上在 2 个目录中安装了 icu4c
,我们需要确保我们想要的那个在我们的 $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"
显然您可以忽略 $HOMEBREW
、$COMPOSER
等,并根据需要应用。我只是将它们分开以获得一个干净且易于理解的 $PATH。老实说,我真的建议像我上面那样组织和分离你的路径。帮了大忙!
在Mac,您首先需要安装icu4c:
$ brew install icu4c
$ brew link icu4c --force
然后修改您的 $PATH
以包含 icu4c
:
export PATH="/usr/local/opt/icu4c/bin:$PATH"
export PATH="/usr/local/opt/icu4c/sbin:$PATH"
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
最后为 php 安装 mongodb
驱动程序:
$ sudo pecl install mongodb