On m'a demandé de lancer un site créé par quelqu'un d'autre. C'est un site de boutique Wordpress qui a besoin de Memcached pour fonctionner, et j'ai eu des problèmes pour que Memcached et le plugin php memcache fonctionnent sur mon serveur local. Avant d'installer memcached et le plugin PHP memcache, j'obtiendrais cette erreur:
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Maintenant que j'ai memcached et que le plugin PHP memcache est installé (via Homebrew), j'obtiens une page "Aucune donnée reçue" et j'obtiens cette erreur dans mon journal d'erreurs 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)
J'ai essayé de chercher ce pid dans Activity Monitor en vain, et il change chaque fois que j'essaie de charger la page. De plus, je ne trouve rien sur _mmc_queue_pop nulle part.
J'utilise Mac OSX Lion, PHP ver 5.3.8, Memcached ver 1.4.13 et le plugin PHP Memcache ver 3.0.6.
Est-ce que quelqu'un sait comment je peux résoudre ce problème?
Merci!
-fgnu89-inline
dansCFLAGS
/CXXFLAGS
. Ce qui se passe, c'est que leinline
mot - clé sous de nouvelles règles entraîne l'_mmc_queue_pop
inline dans tous les cas, ne laissant rien pourmemcache.so
un lien dynamique vers.Réponses:
Comme David l'a mentionné dans les commentaires, lors de la construction du plugin memcache, PAS de memcached lui-même, vous devez ajouter run
configure
comme ceci:Cela a parfaitement fonctionné pour moi.
la source
Je suggérerais dans un premier temps de m'assurer que memcache.so est vraiment lié. Sur Linux, vous utiliseriez
ldd
, sur OSX, il devrait êtreotool -L
IIRC. Il semble que le plugin s'empare soit de la mauvaise de plusieurs bibliothèques memcache sur le système, soit d'une version incompatible.la source
Addendum - El Capitan, php56, php56-memcache 3.0.8
Après avoir lu les réponses de David Schwartz et CourtDemone, je n'ai toujours pas compris, jusqu'à ce que je lise cette réponse sur SO sur la façon de modifier une formule homebrew.
J'ai ajouté ce qui suit à la formule en exécutant
brew edit php56-memcache
et en collant dans les lignes suivantes:la source