Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t让PHP加载mongo.so扩展_Php_Macos_Mongodb_Xampp - Fatal编程技术网

Can';t让PHP加载mongo.so扩展

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-

我尝试过用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而异)


我正在运行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