다른 사람이 만든 사이트를 시작하라는 요청을 받았습니다. Memcached를 실행 해야하는 WordPress 상점 사이트이며 로컬 서버에서 Memcached 및 memcache PHP 플러그인을 작동시키는 데 문제가 있습니다. memcached 및 memcache PHP 플러그인을 설치하기 전에이 오류가 발생합니다.
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
memcached 및 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)
Activity Monitor에서 해당 pid를 찾으려고 노력했지만 페이지를로드하려고 할 때마다 변경됩니다. 또한, 나는 _mmc_queue_pop에 대해 아무것도 찾을 수 없습니다.
Mac OSX Lion, PHP 버전 5.3.8, Memcached 버전 1.4.13 및 Memcache PHP 플러그인 버전 3.0.6을 실행하고 있습니다.
누구든지 내가 어떻게 해결할 수 있는지 알고 있습니까?
감사!
답변
David이 주석에서 언급했듯이 memcache 자체가 아닌 memcache 플러그인을 빌드 할 때 다음 configure
과 같이 실행을 추가해야합니다 .
MACOSX_DEPLOYMENT_TARGET=10.7 CFLAGS='-fgnu89-inline' LDFLAGS='-fgnu89-inline' CXXFLAGS='-fgnu89-inline' ./configure
그것은 나를 위해 완벽하게 작동했습니다.
답변
memcache.so가 실제로 연결되어 있는지 확인하는 첫 번째 단계로 제안합니다. Linux에서는을 사용 ldd
하고 OSX에서는 otool -L
IIRC 여야합니다 . 플러그인이 시스템의 여러 memcache 라이브러리 중 하나 또는 호환되지 않는 버전 중 하나를 보유하고있는 것 같습니다.
답변
부록-엘 캐피 탄, php56, php56-memcache 3.0.8
David Schwartz와 CourtDemone의 답변을 읽은 후에도 homebrew 공식을 편집하는 방법에 대한 SO 에 대한 이 답변을 읽을 때까지 나는 그것을 얻지 못했습니다 .
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"