Ich wurde gebeten, eine Site zu starten, die jemand anderes erstellt hat. Es ist eine Wordpress-Shop-Site, für deren Ausführung Memcached erforderlich ist, und ich hatte Probleme, Memcached und das Memcache-PHP-Plugin auf meinem lokalen Server zum Laufen zu bringen. Vor der Installation von memcached und dem memcache-PHP-Plugin wird folgende Fehlermeldung angezeigt:
Fatal error: Class 'Memcache' not found in [Path]wp-content/object-cache.php on line 350
Nachdem ich memcached und das memcache-PHP-Plugin installiert habe (über Homebrew), erhalte ich die Seite "Keine Daten empfangen" und erhalte diesen Fehler in meinem Apache-Fehlerprotokoll:
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)
Ich habe erfolglos versucht, diese PID im Aktivitätsmonitor zu suchen, und sie ändert sich jedes Mal, wenn ich versuche, die Seite zu laden. Außerdem kann ich nirgendwo etwas über _mmc_queue_pop finden.
Ich verwende Mac OSX Lion, PHP Version 5.3.8, Memcached Version 1.4.13 und Memcache PHP Plugin Version 3.0.6.
Weiß jemand, wie ich das beheben kann?
Vielen Dank!
-fgnu89-inline
inCFLAGS
/ neu erstellenCXXFLAGS
. Was passiert, ist, dass dasinline
Schlüsselwort unter neuen Regeln_mmc_queue_pop
in allen Fällen inline ist und nichts fürmemcache.so
eine dynamische Verknüpfung übrig bleibt .Antworten:
Wie David in den Kommentaren erwähnt hat, müssen Sie beim Erstellen des Memcache-Plugins, das sich NICHT selbst zwischengespeichert hat, einen Lauf
configure
wie folgt hinzufügen :Das hat bei mir perfekt funktioniert.
quelle
Ich würde als ersten Schritt vorschlagen, um sicherzustellen, gegen was memcache.so wirklich verlinkt ist. Unter Linux würden Sie verwenden
ldd
, unter OSX sollte esotool -L
IIRC sein. Es sieht so aus, als würde das Plugin entweder die falsche einer von mehreren Memcache-Bibliotheken auf dem System oder eine nicht kompatible Version abrufen.quelle
Nachtrag - El Capitan, php56, php56-memcache 3.0.8
Nachdem ich die Antworten von David Schwartz und CourtDemone gelesen hatte, bekam ich sie immer noch nicht, bis ich diese Antwort auf SO über das Bearbeiten einer Homebrew-Formel las .
Ich habe der Formel Folgendes hinzugefügt, indem ich
brew edit php56-memcache
die folgenden Zeilen ausgeführt und eingefügt habe :quelle