Não foi possível carregar a extensão memcache.so

9

Eu construí PHP a partir da fonte com o comando 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' 

Eu instalei a extensão 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

Eu adiciono ao meu /usr/local/lib/php.in

extension=memcache.so

Reiniciei meu apache e execute o php-m, mas o php parece não carregar a extensão memcache. Segui esta solução neste site http://www.howtoforge.com/forums/showthread.php?t=26554

Eu adicionei o caminho completo

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

apache reiniciado Mas não carregou a extensão memcache! Eu pesquiso no Google, mas o mesmo problema! Como posso carregar esta extensão _ _ "

billyduc
fonte

Respostas:

1

Primeiramente, execute seu binário php como

php -v

Ele deve reclamar que seu php.ini deseja carregar módulos que não podem ser carregados ...

Se não reclamar, execute

php --ini

Isso deve fornecer a localização do seu php.ini (apenas coloque a edição errada: D)

Isso ajudou?

Arenstar
fonte
1

O problema é ..., neste ponto: wget http://pecl.php.net/get/memcache Em vez de tar -zxvf memcache-2.2.5.tgz, você deve fazer tar -zxvf memcache(este é o nome do arquivo do wget).

Depois de extrair o arquivo, você obterá a versão mais recente do memcache; no momento em que faço isso, recebo a pasta memcache-3.0.8 .

Portanto, os próximos passos serão:

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

E finalmente, não se esqueça de adicionar esta linha ao seu php.ini:

extension = memcache.so

E reinicie o Apache.

Dylan B
fonte
0

Tem certeza de que o memcached está instalado no local correto? O que você ganha se executar:locate memcache.so

O memcached está instalado (o binário)? Requer bibliotecas extras (libmemcache)?

Tom O'Connor
fonte
Você deve usar o find, e não o local, pois ele ainda não pode estar no local db.
Cian
O daemon do memcached foi instalado com sucesso! e quando localizo a extensão memcache, localize 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 Acho que o problema é o php não carregou a extensão!
billyduc 15/09/09
0

Adicione uma extension_dirdiretiva para informar ao PHP de onde carregar as extensões e remova o caminho da extensiondiretiva.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613
Dan Carley
fonte
pobre de mim! Isso não funciona!
billyduc 30/09/09
0

Uma coisa que me ajudou é usar

pecl uninstall memcache
pecl install memcache

Outra coisa (isso se aplica apenas a versões php antigas): http://www.hollub.at/phpmanual/ref.memcache.html diz:

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

isso é devido ao seu / var / tmp montado com permissão noexec

você pode tentar recompilar o memcache usando o comando fuenfundachtzig após excluir temporariamente o link simbólico / var / tmp e criar uma nova pasta / var / tmp. (essa configuração pode ser diferente do seu servidor)

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

#pecl install memcache

então proteja sua pasta temporária

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

leia mais sobre como proteger o tmp aqui

e como usar o PECL com tmp montado com noexec

apis17
fonte
0

Se você tiver seu PHP compilado, tente remover extension_dir do seu php.ini .

vfedorkov
fonte