Меня попросили запустить сайт, созданный кем-то другим. Это сайт магазина Wordpress, для работы которого требуется Memcached, и у меня были проблемы с запуском Memcached и плагином memcache php на моем локальном сервере. Перед установкой memcached и плагина PHP memcache я бы получил такую ошибку:
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Теперь, когда у меня есть 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)
Я пытался найти этот pid в Activity Monitor, но безрезультатно, и он меняется каждый раз, когда я пытаюсь загрузить страницу. Кроме того, я нигде не могу найти ничего о _mmc_queue_pop.
Я использую Mac OSX Lion, PHP версии 5.3.8, Memcached версии 1.4.13 и плагин Memcache PHP версии 3.0.6.
Кто-нибудь знает, как я могу это исправить?
Спасибо!
-fgnu89-inline
вCFLAGS
/CXXFLAGS
. Что происходит, так это то, чтоinline
ключевое слово в соответствии с новыми правилами приводит_mmc_queue_pop
к тому, что оно встроено во всех случаях, и ничего не остается дляmemcache.so
динамической ссылки.Ответы:
Как отметил Дэвид в комментариях, при создании плагина memcache, а не memcached, вы должны добавить run
configure
следующим образом:Это отлично сработало для меня.
источник
В качестве первого шага я бы предложил убедиться, с чем действительно связан memcache.so. На Linux вы бы использовали
ldd
, на OSX это должен бытьotool -L
IIRC. Похоже, что плагин получает не ту или иную из нескольких библиотек memcache в системе, или несовместимую версию.источник
Приложение - El Capitan, php56, php56-memcache 3.0.8
Прочитав ответы Дэвида Шварца и CourtDemone, я так и не получил его, пока не прочитал этот ответ на SO о том, как редактировать формулу домашнего приготовления.
Я добавил следующее в формулу, запустив
brew edit php56-memcache
и вставив следующие строки:источник