Problemas com memcache.so

8

Fui solicitado a lançar um site que alguém criou. É um site de loja do Wordpress que precisa do Memcached para rodar, e eu tenho tido problemas com o Memcached e com o plugin php do memcache funcionando no meu servidor local. Antes de instalar o memcached e o plug-in PHP do memcache, eu obteria este erro:

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

Agora que eu tenho memcached e o plug-in do memcache PHP instalado (via Homebrew), recebo uma página "Nenhum dado recebido" e recebo esse erro no meu log de erros do 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)

Eu tentei procurar esse pid no Activity Monitor sem sucesso, e ele muda toda vez que tento carregar a página. Além disso, não consigo encontrar nada sobre _mmc_queue_pop em qualquer lugar.

Estou executando o Mac OSX Lion, o PHP ver 5.3.8, o Memcached ver 1.4.13 e o Memcache PHP plugin ver 3.0.6.

Alguém sabe como posso consertar isso?

Obrigado!

    
por CourtDemone 06.05.2012 / 01:45

3 respostas

8

Como David mencionou nos comentários, ao construir o plugin memcache, NÃO memcached em si, você tem que adicionar run configure assim:

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

Isso funcionou perfeitamente para mim.

    
por 11.05.2012 / 01:46
2

Eu sugeriria como um primeiro passo para se certificar de que o memcache.so está realmente ligado. No linux você usaria ldd , no OSX deveria ser otool -L IIRC. Isso parece que o plug-in se apega tanto ao errado de várias bibliotecas memcache no sistema, ou de uma versão que é incompatível.

    
por 06.05.2012 / 02:06
2

Adendo - El Capitan, php56, php56-memcache 3.0.8

Depois de ler as respostas de David Schwartz e CourtDemone, ainda não entendi, até que eu li esta resposta em SO sobre como editar uma fórmula homebrew.

Eu adicionei o seguinte à fórmula executando brew edit php56-memcache e colando nas seguintes linhas:

   .  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"
    
por 29.10.2015 / 05:58