遇到memcache.so问题

我被要求启动其他人build立的网站。 这是一个需要Memcached运行的WordPress商店网站,我一直在麻烦获取Memcached和memcache php插件在我的本地服务器上工作。 在安装memcached和memcache PHP插件之前,我会得到这个错误:

Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350 

现在我已经安装了memcache和memcache PHP插件(通过Homebrew),我得到一个“No data received”页面,并在我的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) 

我已经尝试在活动监视器中寻找该pid无济于事,每当我尝试加载页面时都会发生变化。 另外,我无法在任何地方find关于_mmc_queue_pop的任何信息。

我运行的是Mac OSX Lion,PHP ver 5.3.8,Memcached ver 1.4.13和Memcache PHP plugin ver 3.0.6。

有谁知道我可以解决这个问题?

谢谢!

正如David在评论中提到的那样,在构buildmemcache插件时,不要使用memcached本身,而必须像这样添加运行configure

 MACOSX_DEPLOYMENT_TARGET=10.7 CFLAGS='-fgnu89-inline' LDFLAGS='-fgnu89-inline' CXXFLAGS='-fgnu89-inline' ./configure 

这对我来说是完美的。

我build议作为第一步,以确保什么memcache.so是真正的链接。 在linux上你会使用ldd ,在OSX上它应该是otool -L IIRC。 这看起来像插件获取系统上的多个memcache库中的一个错误,或者不兼容的版本。

附录 – El Capitan,php56,php56-memcache 3.0.8

在阅读David Schwartz和CourtDemone的答案后,我仍然没有得到它,直到我读到这个关于如何编辑自制公式的答案 。

我通过运行brew edit php56-memcache并在以下行中粘贴来添加以下内容:

  . 20 safe_phpize . 21 + 22 ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.11' + 23 ENV['CFLAGS'] = '-fgnu89-inline' + 24 ENV['LDFLAGS'] = '-fgnu89-inline' + 25 ENV['CXXFLAGS'] = '-fgnu89-inline' + 26 . 27 system "./configure", "--prefix=#{prefix}", . 28 phpconfig . 29 system "make"