Can';t让PHP加载mongo.so扩展
我尝试过用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:unknown第0行中的unknown所需加载命令0x80000022 (路径因XAMPP或MAMP而异)Can';t让PHP加载mongo.so扩展,php,macos,mongodb,xampp,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-
我正在运行OS 10.5.8。有什么想法吗?我可以告诉您,这是一个与体系结构相关的问题(例如,请参阅)。根据,XAMPP仍然是32位的,PECL将尝试在默认情况下将扩展构建为64位 但是,从2.0开始,MAMP和MAMP Pro都有32位和64位二进制文件 然而,问题是你的Mac电脑是否有64位处理器,以及默认情况下是否运行64位OS X。提供有关如何确定您拥有哪台Mac电脑的指南。例如,如果您有一台2008-2010年的Macbook Pro,默认情况下它可能运行32位内核,但是(请参阅本文)您可以将其设置为运行64位内核 实现目标的最快途径可能是为32位构建mongo.so。关于的这篇文章说,对于PECL,它应该简单如下:
CFLAGS="-arch i386" ./pecl install
如果不起作用,您可以尝试手动安装,传递32位标志进行配置。请参阅,以了解可能对您有效的方法
这应该有效(基于上述和):
tar zxvf mongodb mongodb php驱动程序-.tar.gz
cd mongodb mongodb php驱动程序-
phpize
MACOSX_部署_目标=10.5 CFLAGS=“-arch i386-arch x86_64-g-Os-pipe-no cpp precomp”CCFLAGS=“-arch i386-arch x86_64-g-Os-pipe”cxflags=“-arch i386-arch x86_64-g-Os-pipe”LDFLAGS=“-arch i386-arch x86_64-bind_at_at_load”。/configure
sudo制作安装
…然后参考上面的php.net链接了解其余的手动安装步骤(即在php.ini中添加扩展)。内核的位根本不会影响Mac OS X上的userland。您可以在32位内核上运行64位应用程序,反之亦然。但是,您不能使用32位MAMP和64位扩展。您可以使用32位
mongo.so
运行32位MAMP,但使用64位mongo.so
是行不通的。
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