【发布时间】:2012-06-01 19:54:57
【问题描述】:
我正在尝试让最新的 Mongo 驱动程序在 OS X 10.5.8 上与 MAMP 1.9.6 一起使用。
我从源代码成功构建它,因为似乎没有预编译的版本,将它包含到正确的目录中并重新启动 apache。
但 PHP 无法识别扩展名。我之前用的是1.0.11驱动,很好用,但是我需要新版本,因为Doctrines ODM需要它。
当我用 1.0.11 替换 1.2.10 mongo.so 并重新启动 apache mongo 时可用。我不明白可能出了什么问题。
有人有这种行为或有任何猜测可以让它发挥作用吗?
更新:PHP错误日志显示如下:
[01-Jun-2012 22:02:37] PHP Warning: PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0
我不太清楚这是什么意思?
2。更新:
我终于可以同步phpize的API版本了。
但现在我无法再构建驱动程序了。
我执行以下操作:
phpize
./configure
make
sudo make install
但是在make 命令中,我遇到了大量的语法错误。好像找不到几个头文件。
第一个是zend_config.h,实际上我只有另外两个文件:
zend_config.nw.h
zend_config.w32.h
我下载了 MAMP 组件来获取这些文件。为什么我错过了这个?还有很多其他的。
我使用的是 PHP 5.3.5 有没有办法从不同的来源获取这些头文件?
【问题讨论】:
-
查找 PHP 启动错误(在此处启用日志记录)。我会说由于某种原因 PHP 无法加载二进制扩展。可能是一些编译问题。
-
好吧,正如它所说,API 版本不匹配。在编译模块时,指定需要使用 API 20090626。您使用的 API 20060613 已经过时了。
-
AFAIK 这是您使用构建脚本指定的内容。另请参阅How to set the PHP Api Version for phpize,它没有完全回答这个问题(至少不是一般性的),但应该给你一些指示。
-
我能够同步它,但正如你在上面看到的,我无法再构建它了。
-
你下载了谁的 PHP 源代码吗?如果不从 git 获取它,请参阅 hakre.wordpress.com/2012/05/20/php-on-heroku-again ,向下滚动它有一个关于如何在从 github 下载整个 PHP 源代码时“从源”编译 PHP 模块的部分。