如何构建mongo.所以或PHP与正确的模块api版本


How to build mongo.so or PHP with the correct module api version

尝试在我的MAMP设置上安装mongoDB。我有MAMP 3.05,它是PHP 5.5.10附带的。使用从mongo网站的说明安装mongo,它似乎运行正常。从mongo github页面抓取mongo扩展,并按照他们的说明构建和添加扩展到php.ini。

一切似乎都很好,直到我重新启动MAMP。在php_error.log中,我看到如下:

PHP Warning:  PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20100525
PHP    compiled with module API=20121212
These options need to match
 in Unknown on line 0

看起来php的API号是一个较新的版本,所以最好不要重新构建旧版本的php。是否有一种方法可以用正确的模块版本重建mongo扩展,或者我必须放弃MAMP并手动构建PHP ?

如果使用的phpize命令版本正确,请与which phpize命令核对。这应该指向一个与您安装PHP5的目录相似的目录。我的在/usr/bin/phpize中,这是默认的OS X安装。

您可以进一步运行phpize -v来检查它所链接的API版本。在我的例子中(默认的OS X PHP安装),它输出:

Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

如果输出的API版本与您所需的数字20121212不匹配(在我的情况下是20100412不匹配),您正在使用错误的phpize来配置扩展。

你必须先做这个

 sudo cp -r /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S‌​DKs/MacOSX10.10.sdk/usr/include/php /usr/include/php