无法让PHP加载mongo.so扩展名

时间:2010-10-14 19:52:01

标签: php macos mongodb xampp

我尝试使用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:未知所需的加载命令0x80000022在第0行的未知

(路径因XAMPP或MAMP而异)

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

1 个答案:

答案 0 :(得分:0)

刚刚离开那里的错误消息,我可以告诉你这是一个与架构相关的问题(例如,请参阅this)。根据{{​​3}},XAMPP仍然只是32位,而PECL默认会尝试将扩展构建为64位。

然而,从this question on their FAQ开始,MAMP和MAMP Pro都包含32位和64位二进制文​​件。

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

你最快的目标可能就是为32位构建mongo.so。关于This Apple support article的这篇文章说PECL应该这么简单:

CFLAGS="-arch i386" ./pecl install

如果这不起作用,您可以尝试手动安装,传递32位标志进行配置。有关可能适合您的方法,请参阅using MAMP/PECL to install PHP extensions

这应该有效(基于以上和this question for memcached.so installation):

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中添加扩展名)。