pecl install mongo - continua a compilar com a API do módulo incorreta

9

Trabalhando com o Ubuntu 12.04 aqui, nginx e php5-fpm

Eu tinha o mongo funcionando bem no php 5.3, então adicionei o ondrej / php5 ppa e atualizei para o php5.4. Mantinha as extensões GD e CURL, mas não o mongo. Eu adicionei a linha novamente ao arquivo php.ini e nada. Ativei os erros de inicialização e obtive o seguinte:

PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/mongo.so' - /usr/lib/php5/20100525/mongo.so: cannot open shared object file: No such file or directory

Então, acho que sim, find -name 'mongo.so'mudei e movi o arquivo de 20090626 / para 20100525 / ..., o que resultou neste erro:

PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match

Eu então fiz pecl uninstall mongoe pecl install mongo- que criou o novo arquivo mongo.so em 20090626 /

Eu sou meio novo em tudo isso, então espero que seja um erro cego e fácil de corrigir! Eu só preciso colocar o mongo de volta em funcionamento.

kavisiegel
fonte

Respostas:

12

Meu palpite seria:

  • pecl install mongoestá instalando um binário pré-construído (o que seria muito burro, mas não seria tão surpreendente); ou
  • Você ainda tem o php5-devpacote antigo da instalação do 5.3 instalado e peclestá encontrando e usando isso em vez da versão 5.4. Dê uma olhada na sua lista de pacotes relacionados ao PHP ( dpkg -l '*php*') e veja se há algum pacote 5.3 restante e atualize-o.
mulher
fonte
Eu estava apenas respondendo minha própria pergunta com isso! Obrigado!
kavisiegel
Então qual foi?
womble
2
Eu tive que atualizar php5-dev, desinstalar o mongo e reinstalar.
kavisiegel
que funcionou perfeitamente para mim
Oliver Bayes-Shelton
2

Grandes mentes pensam da mesma forma, womble postou momentos depois que eu descobri o que estava acontecendo. Sua resposta está correta e, antes da minha, é o que aceitarei como resposta, mas para referência futura, a solução foi a seguinte:

apt-get update
apt-get install php5-dev
pecl uninstall mongo
pecl install mongo
/etc/init.d/php5-fpm restart

E, é claro, o mongo.so já estava no php.ini de uma maneira que o pecl não o removeu, tornando mais fácil a atualização.

kavisiegel
fonte