memcache.so 的问题

Cou*_*one 8 php mac memcached memcache lion

我被要求启动一个别人建立的网站。这是一个需要 Memcached 才能运行的 Wordpress 商店站点,我一直在让 Memcached 和 memcache php 插件在我的本地服务器上运行时遇到问题。在安装 memcached 和 memcache PHP 插件之前,我会收到这个错误:

Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Run Code Online (Sandbox Code Playgroud)

现在我已经安装了 memcached 和 memcache PHP 插件(通过 Homebrew),我得到一个“没有收到数据”页面,并在我的 Apache 错误日志中得到这个错误:

dyld: lazy symbol binding failed: Symbol not found: _mmc_queue_pop
  Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
  Expected in: flat namespace

dyld: Symbol not found: _mmc_queue_pop
  Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
  Expected in: flat namespace

[Sat May 05 16:38:27 2012] [notice] child pid 26491 exit signal Trace/BPT trap (5)
Run Code Online (Sandbox Code Playgroud)

我尝试在活动监视器中查找该 pid 无济于事,并且每次尝试加载页面时它都会更改。另外,我在任何地方都找不到关于 _mmc_queue_pop 的任何信息。

我正在运行 Mac OSX Lion、PHP 5.3.8 版、Memcached 1.4.13 版和 Memcache PHP 插件 3.0.6 版。

有谁知道我该如何解决这个问题?

谢谢!

Cou*_*one 8

正如大卫在评论中提到的,在构建 memcache 插件时,而不是 memcached 本身,你必须configure像这样添加运行:

MACOSX_DEPLOYMENT_TARGET=10.7 CFLAGS='-fgnu89-inline' LDFLAGS='-fgnu89-inline' CXXFLAGS='-fgnu89-inline' ./configure
Run Code Online (Sandbox Code Playgroud)

这对我来说非常有效。