MAC XAMPP PHP7.3编译mongo扩展的时候报错,求大神帮助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAC XAMPP PHP7.3编译mongo扩展的时候报错,求大神帮助相关的知识,希望对你有一定的参考价值。

ld: warning: directory not found for option '-L/lib'
ld: library not found for -licuuc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mongodb.la] Error 1

参考技术A 有一个类库没有发现追答

licuuc类库找不到

无法让 PHP 加载 mongo.so 扩展

【中文标题】无法让 PHP 加载 mongo.so 扩展【英文标题】:Can't get PHP to load mongo.so extension 【发布时间】:2011-04-25 14:49:56 【问题描述】:

我尝试使用 PECL 构建库,我尝试从 github 下载它。我试过 MAMP,我试过 XAMPP。我总是遇到同样的错误:

PHP 警告:PHP 启动:无法加载动态库 '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so' - dlopen (/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so, 9):找不到合适的图像。确实找到了:\n\t/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so:在第 0 行的未知中需要未知的加载命令 0x80000022

(路径因 XAMPP 或 MAMP 而异)

我正在运行 OS 10.5.8。有什么想法吗?

【问题讨论】:

【参考方案1】:

我可以告诉你这是一个与架构相关的问题(例如,请参阅this)。根据this question on their FAQ,XAMPP 仍然是 32 位的,PECL 默认会尝试将扩展构建为 64 位。

但是,从 2.01 开始,MAMP 和 MAMP Pro 都提供 32 位和 64 位二进制文​​件。

但是,问题是您的 Mac 是否具有 64 位处理器,以及它是否默认运行 64 位 OS X。 This Apple support article 提供有关如何确定您拥有的 Mac 的指南。例如,如果您有一台 2008-2010 年的 Macbook Pro,它可能默认运行 32 位内核,但(请参阅文章)您可以将其设置为运行 64 位内核。

不过,您实现目标的最快途径可能是为 32 位构建 mongo.so。 using MAMP/PECL to install PHP extensions 上的这篇文章说,使用 PECL 应该像这样简单:

CFLAGS="-arch i386" ./pecl install

如果这不起作用,您可以尝试手动安装,传递 32 位标志进行配置。请参阅this question for memcached.so installation 了解可能对您有用的方法。

这应该可以工作(基于上述和manual installation instructions for the Mongo driver on php.net):

tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
cd mongodb-mongodb-php-driver-<commit_id>
phpize
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" ./configure
sudo make install

...然后参考上面的 php.net 链接了解其余的手动安装步骤(即在 php.ini 中添加扩展名)。

【讨论】:

内核的位数根本不会影响 Mac OS X 上的用户空间。您可以在 32 位内核上运行 64 位应用程序,反之亦然。 @duskwuff 你说的是对的。然而,你不能做的是使用带有 64 位扩展的 32 位 MAMP。您可以使用 32 位 mongo.so 运行 32 位 MAMP,但使用 64 位 mongo.so 是行不通的。

以上是关于MAC XAMPP PHP7.3编译mongo扩展的时候报错,求大神帮助的主要内容,如果未能解决你的问题,请参考以下文章

Mac下PHP7.3安装Swoole4.4扩展教程

在win10上的xampp集成环境中安装mongo扩展

Mac php7安装mongodb扩展以适配使用mongo扩展的php旧版本代码

Mac php7本地安装mongodb扩展以适配使用mongo扩展的线上老代码

centos 下编译安装php7.3的redis扩展

macOS High Sierra 10.13.3 上 XAMPP 7.2.4 的 mongodb 3.6.4