Impossible de charger l'extension memcache.so

9

J'ai construit PHP à partir des sources avec la commande configure

'./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' 

J'ai installé l'extension php memcache:

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

J'ajoute à mon /usr/local/lib/php.in

extension=memcache.so

Redémarré mon apache et exécuter php-m mais php ne semble pas charger l'extension memcache J'ai suivi cette solution à partir de ce site http://www.howtoforge.com/forums/showthread.php?t=26554

J'ai ajouté le chemin complet

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

redémarré apache Mais il n'a pas chargé l'extension memcache! Je google autour mais le même problème! Comment puis-je charger cette extension _ _ "

billyduc
la source

Réponses:

1

Commencez par exécuter votre binaire php comme

php -v

Il devrait se plaindre que votre php.ini veut charger des modules qui ne peuvent pas être chargés ...

S'il ne se plaint pas, lancez

php --ini

Cela devrait vous donner l'emplacement de votre php.ini (au cas où vous éditez le mauvais: D)

Est-ce que cela a aidé?

Arenstar
la source
1

Le problème est ..., à ce stade: wget http://pecl.php.net/get/memcache Au lieu de tar -zxvf memcache-2.2.5.tgz, vous devriez le faire tar -zxvf memcache(c'est le nom de fichier de wget).

Après avoir extrait le fichier, vous obtiendrez la dernière version de memcache, au moment où je le fais, j'obtiens le dossier memcache-3.0.8 .

Ainsi, les prochaines étapes seront:

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

Et enfin, n'oubliez pas d'ajouter cette ligne à votre php.ini:

extension = memcache.so

Et redémarrez Apache.

Dylan B
la source
0

Êtes-vous sûr que memcached est installé au bon endroit? Qu'obtenez-vous si vous courez:locate memcache.so

Memcached est-il installé (le binaire)? Faut-il des bibliothèques supplémentaires (libmemcache)?

Tom O'Connor
la source
Vous devez utiliser find, not Locate, car il se peut qu'il ne se trouve pas encore dans la base de données de localisation.
Cian
Le démon memcached est installé avec succès! et quand je trouve l'extension memcache, localisez 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 Je pense que le problème est que php n'a pas chargé l'extension!
billyduc
0

Ajoutez une extension_dirdirective pour indiquer à PHP où charger les extensions et supprimez le chemin de la extensiondirective.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613
Dan Carley
la source
pauvre de moi ! Ça ne marche pas!
billyduc le
0

Une chose qui m'a aidé est d'utiliser

pecl uninstall memcache
pecl install memcache

Autre chose (cela ne s'applique cependant qu'aux versions php assez anciennes): http://www.hollub.at/phpmanual/ref.memcache.html dit:

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

c'est à cause de votre / var / tmp monté avec la permission noexec

vous pouvez essayer de recompiler memcache en utilisant la commande fuenfundachtzig après avoir supprimé temporairement le lien symbolique / var / tmp et créé un nouveau dossier / var / tmp. (ce paramètre peut différer de votre serveur)

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

#pecl install memcache

puis sécurisez votre dossier temporaire

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

en savoir plus sur la sécurisation de tmp ici

et comment utiliser PECL avec tmp monté avec noexec

apis17
la source
0

Si vous avez compilé votre PHP, essayez de supprimer extension_dir de votre php.ini .

vfedorkov
la source