Die Erweiterung memcache.so kann nicht geladen werden

9

Ich habe PHP aus dem Quellcode mit dem Befehl configure erstellt

'./configure' '--prefix=/usr/local/php-5.2.8' '--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d' '--with-apxs2=/usr/local/httpd/bin/apxs' '--with-mysql=/usr/local/mysql/' '--with-zlib' 

Ich habe die PHP Memcache Erweiterung installiert:

wget http://pecl.php.net/get/memcache
tar -zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure --enable-memcache
make
make install

Ich füge meiner /usr/local/lib/php.in hinzu

extension=memcache.so

Ich habe meinen Apache neu gestartet und php-m ausgeführt, aber php scheint keine Memcache-Erweiterung zu laden. Ich habe diese Lösung von dieser Website aus verfolgt: http://www.howtoforge.com/forums/showthread.php?t=26554

Ich habe den vollständigen Pfad hinzugefügt

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so 

Apache neu gestartet Aber die Memcache-Erweiterung wurde nicht geladen! Ich google herum aber das gleiche Problem! Wie kann ich diese Erweiterung laden _ _ "

billyduc
quelle

Antworten:

1

Führen Sie zuerst Ihre PHP-Binärdatei wie

php -v

Es sollte sich beschweren, dass Ihre php.ini Module laden möchte, die nicht geladen werden können ...

Wenn es sich nicht beschwert, laufen Sie

php --ini

Dies sollte Ihnen den Speicherort Ihrer php.ini geben (falls Sie die falsche bearbeiten: D)

Hat das geholfen?

Arenstar
quelle
1

Das Problem ist ... an dieser Stelle: wget http://pecl.php.net/get/memcache Stattdessen tar -zxvf memcache-2.2.5.tgzsollten Sie tar -zxvf memcachedies tun (dies ist der Dateiname von wget).

Nachdem Sie die Datei extrahiert haben, erhalten Sie die neueste Version von memcache. Zu diesem Zeitpunkt erhalte ich den Ordner memcache-3.0.8 .

Die nächsten Schritte sind also:

cd memcache-3.0.8 
phpize 
./configure --enable-memcache 
make
make install

Und vergessen Sie nicht, diese Zeile zu Ihrer php.ini hinzuzufügen:

extension = memcache.so

Und starten Sie Apache neu.

Dylan B.
quelle
0

Sind Sie sicher, dass memcached am richtigen Speicherort installiert ist? Was bekommst du, wenn du rennst:locate memcache.so

Ist memcached installiert (die Binärdatei)? Benötigt es zusätzliche Bibliotheken (libmemcache)?

Tom O'Connor
quelle
Sie sollten find verwenden, nicht lokalisieren, da es sich möglicherweise noch nicht in der Lokalisierungsdatenbank befindet.
Cian
Der zwischengespeicherte Daemon wurde erfolgreich installiert! und wenn ich die memcache-Erweiterung finde, finde ich memcache.so /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/local/src/memcache-2.2.5/.libs /memcache.so /usr/local/src/memcache-2.2.5/modules/memcache.so Ich denke, das Problem ist, dass PHP die Erweiterung nicht geladen hat!
Billyduc
0

Fügen Sie eine extension_dirDirektive hinzu, um PHP mitzuteilen, woher Erweiterungen geladen werden sollen, und entfernen Sie den Pfad aus der extensionDirektive.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613
Dan Carley
quelle
ich armer ! Es funktioniert nicht!
Billyduc
0

Eine Sache, die mir geholfen hat, ist zu verwenden

pecl uninstall memcache
pecl install memcache

Eine andere Sache (dies gilt jedoch nur für ziemlich alte PHP-Versionen): http://www.hollub.at/phpmanual/ref.memcache.html sagt:

In order to use these functions you must compile PHP with Memcache support by using the --enable-memcache[=DIR] option. 
fuenfundachtzig
quelle
0

Dies liegt daran, dass Ihr / var / tmp mit der Berechtigung noexec bereitgestellt wurde

Sie können versuchen, den Memcache mit dem Befehl fuenfundachtzig neu zu kompilieren, nachdem Sie den Symlink / var / tmp vorübergehend gelöscht und einen neuen Ordner / var / tmp erstellt haben. (Diese Einstellung unterscheidet sich möglicherweise von Ihrem Server.)

#rm /var/tmp
#mkdir /var/tmp

#pecl install memcache

Sichern Sie dann Ihren temporären Ordner

#rm -rf /var/tmp
#ln -s /tmp /var/tmp

Lesen Sie mehr über die Sicherung tmp hier

und wie man PECL mit tmp verwendet, das mit noexec gemountet ist

apis17
quelle
0

Wenn Sie Ihr PHP kompiliert haben, versuchen Sie, extension_dir aus Ihrer php.ini zu entfernen .

vfedorkov
quelle