PHP API版本不匹配,为Mac上的MAMP编译memcache

时间:2013-07-04 05:11:31

标签: php memcached mamp

我的本​​机Apache / PHP设置正常使用PHP 5.3.15和memcache。那里的一切都很好。但我希望能够在本地运行PHP 5.2实例。因此,我认为最简单的方法是使用MAMP。

安装MAMP很简单,几秒钟就可以启动服务器。我唯一的问题是编译和安装5.2.17的memcache扩展(MAMP附带的版本)。

以下是我安装它的步骤:

  1. 下载PHP 5.2.17源文件并将它们放在我的 MAMP / bin / php / php5.2.17 / include / php文件夹。
  2. 下载memcache-2.2.7并将内容解压缩到/ tmp。
  3. $ /Applications/MAMP/bin/php/php5.2.17/bin/phpize为5.2.17设置env。
  4. $ MACOSX_DEPLOYMENT_TARGET=10.8 CFLAGS='-O3 -fno-common -arch i386 -arch x86_64' LDFLAGS='-O3 -arch i386 -arch x86_64' CXXFLAGS='-O3 -fno-common -arch i386 -arch x86_64' ./configure --with-php-config=/Applications/MAMP/bin/php/php5.2.17/bin/php-config
  5. $ make
  6. $ cp /tmp/memcache-2.2.7/memcache-2.2.7/modules/memcache.so /Applications/MAMP/bin/php/php5.2.17/lib/php/extensions/no-debug-non-zts-20060613
  7. extension=memcache.so添加到我的php.ini。
  8. 重新启动服务器。
  9. 这是phpize的输出:

    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519
    configure.in:3: warning: prefer named diversions
    configure.in:3: warning: prefer named diversions
    

    我在php日志中收到此错误:

    04-Jul-2013 00:32:03] PHP Warning:  PHP Startup: memcache: Unable to initialize module
    Module compiled with module API=20090626, debug=0, thread-safety=0
    PHP    compiled with module API=20060613, debug=0, thread-safety=0
    These options need to match in Unknown on line 0
    

    从phpize命令我认为扩展是使用正确的API版本构建的。但API日志告诉我不然。值得注意的是,20090626是我原生PHP的API版本。所以我认为它仍在使用我的原生版本编译(不确定)。

    任何人都知道为什么它没有使用正确的API版本进行编译?

1 个答案:

答案 0 :(得分:1)

好的,似乎如果你使用PHP 5.2.17,你必须使用memcache-2.2.5才能正确加载。我一直在考虑这个问题几天,决定编译一个旧版本,它工作了!!感谢上帝!