memcache.so의 문제


8

다른 사람이 만든 사이트를 시작하라는 요청을 받았습니다. 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을 실행하고 있습니다.

누구든지 내가 어떻게 해결할 수 있는지 알고 있습니까?

감사!


1
와 memcached를 재 구축 -fgnu89-inlineCFLAGS/ CXXFLAGS. inline새로운 규칙 의 키워드 _mmc_queue_pop는 모든 경우에 인라인이 memcache.so되어 동적으로 링크 되지 않습니다 .
David Schwartz

Homebrew 용 CFLAGS / CXXFLAGS를 어떻게 편집 할 수 있습니까? Ruby Forumla 파일에서 무언가를 수정해야합니까?
CourtDemone 1

답변:


8

David이 주석에서 언급했듯이 memcache 자체가 아닌 memcache 플러그인을 빌드 할 때 다음 configure과 같이 실행을 추가해야합니다 .

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

그것은 나를 위해 완벽하게 작동했습니다.


2

memcache.so가 실제로 연결되어 있는지 확인하는 첫 번째 단계로 제안합니다. Linux에서는을 사용 ldd하고 OSX에서는 otool -LIIRC 여야합니다 . 플러그인이 시스템의 여러 memcache 라이브러리 중 하나 또는 호환되지 않는 버전 중 하나를 보유하고있는 것 같습니다.


나는 이런 종류의 물건에서 가장 강하지 않습니다. 이를 위해 터미널에서 정확히 무엇을해야합니까?
CourtDemone

1
otool을 사용하려면 Xcode 도구가 설치되어 있어야합니다. 이 경우 맨 페이지를 사용할 수 있어야합니다. 어쨌든 다윗은 이미 문제가 해결 된 것 같습니다.
rackandboneman

커맨드 라인 도구와 함께 최신 버전의 Xcode가 설치되어 있습니다. David의 게시물에 대한 의견에서 말했듯이 어떻게 구현 해야하는지 모르겠습니다. 누구든지 저를 도울 수 있습니까?
CourtDemone

1
"구성 옵션"및 CFLAGS 설정 방법에 대해서는 Homebrew의 문서 (memcache가있는 경우)를 확인하십시오. 실제로 사용 가능한 "구성 옵션"이없는 경우 CFLAGS 만 엉망으로 만드는 것이 좋습니다. 요리 책에 대한 조언을하기에는 홈 브루에 익숙하지 않으며, "./configure --options && make && make && install install"설치주기가 잘못되었다고 가정하는 일반적인 조언이 있습니다. 그럼에도 불구하고 동일한주기에 익숙하면 모든 소스 빌드 시스템을 망칠 수 있습니다.
rackandboneman

Homebrew에 익숙한 사람이 필요합니다. CFLAGS 줄을 memcached의 설치 공식에 추가하려고 시도했지만 제대로 설치되지 않았습니다.
CourtDemone

2

부록-엘 캐피 탄, 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"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.