0

我的原生 Apache/PHP 设置与 PHP 5.3.15 和 memcache 一起正常工作。那里一切都很好。但我也希望能够在本地运行 PHP 5.2 实例。所以我决定最简单的方法是使用 MAMP。

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

以下是我安装它的步骤:

  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 设置环境。
  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. 重新启动了服务器。

这是 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 版本编译?

4

1 回答 1

1

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

于 2013-07-07T03:02:34.380 回答