solr a extensão php falha em rodar no mais novo Debian Wheezy

2

Estou tentando usar a extensão PHP Solr no Debian Wheezy recentemente atualizado. Ele instala tanto do PECL quanto de fontes sem falhas, mas em vez de me dar a funcionalidade esperada, isso me dá isso em todas as execuções do PHP:

PHP Warning:  PHP Startup: Unable to load dynamic library 
'/usr/lib/php5/20100525/solr.so' - /usr/lib/php5/20100525/solr.so: 
undefined symbol: curl_easy_getinfo in Unknown on line 0

Também os scripts que usam a extensão geram um erro

PHP Error[2]: include(SolrClient.php): failed to open stream: 
No such file or directory in file <...path to my autoloader...>

O meu ponto principal é que foi criado antes e funcionou como um encanto. Na atualização entre os pacotes relevantes, apenas as versões do PHP e libcurl foram alteradas. O caso de Solr foi deixado como está.

Eu tenho todas as bibliotecas libcurl possíveis:

$ locate libcurl
...
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.2.0
/usr/lib/x86_64-linux-gnu/libcurl.a
/usr/lib/x86_64-linux-gnu/libcurl.la
/usr/lib/x86_64-linux-gnu/libcurl.so
/usr/lib/x86_64-linux-gnu/libcurl.so.3
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.2.0
...
/usr/lib32/libcurl.so.3
/usr/lib32/libcurl.so.4
/usr/lib32/libcurl.so.4.2.0
...

Eu instalei o php5-curl package version 5.4.4-2 com o aptitude.

Eu instalei as extensões Sorl com

sudo pecl install solr

(com várias combinações de -f e -n flags e tentou solr-beta também) e com

wget ...
cd ...
phpize
./configure
make 
make install

Estou instalando a versão 1.0.2 da extensão porque funcionava antes da atualização do Squeeze para o Wheezy. Como eu disse anteriormente, a extensão é instalada sem erros.

Já adicionei o extension=solr.so de encantamento ao /etc/php5/mods-available/solr.ini

Que mágica devo fazer para tornar o trabalho de extensão do solr? É verdade que a única solução que tenho é fazer o downgrade da versão libcurl como era antes da atualização?

    
por hijarian 02.07.2012 / 13:51

4 respostas

4

OK, eu mesmo encontrei a resposta. Problema estava nos erros na configuração. No mais novo Wheezy, a árvore de configuração para PHP é a seguinte:

/etc/php5/mods-available/*.ini # here's the ini files containing 'extension=modulename.so' lines and module-specific config.
         /conf.d/NN-*.ini      # here's the symlinks to real .ini files in mods-available
         /cli/conf.d           # symlink from local CLI conf.d to global conf.d 
         /apache/conf.d        # symlink from local apache conf.d to global conf.d

Então eu precisava fazer o seguinte:

  • Adicione um arquivo /etc/php5/mods-available/solr.ini com a linha "extension=solr.so"
  • Adicione um link simbólico /etc/php5/conf.d/30-solr.ini apontando para o solr.ini real
  • Faça o mesmo com curl.so
  • Certifique-se de que "extension=solr.so" e "extension=curl.so" não sejam escritos em qualquer lugar . Essa foi a causa dessa estranha mensagem de erro.

Eu acho que a configuração ficou confusa por causa da atualização recente do Squeeze para o Wheezy, porque toda essa configuração de configuração deve ser feita pelo gerenciador de pacotes.

    
por 03.07.2012 / 00:51
1

Eu estava tendo o mesmo problema com o mesmo erro.

FWIW - O que funcionou para mim foi mover "extension = solr.so" do topo do meu arquivo php.ini para o fundo - obviamente a ordem é importante e a extensão de onda precisa ser puxada primeiro.

Espero que ajude alguém.

    
por 11.01.2013 / 12:36
0

Para qualquer um com o CentOS 6.4, isso fez isso por mim. Graças a hijarian, esta é uma adaptação de sua resposta.

Após instalar tudo e compilar a extensão solr.so, crie um novo arquivo solr.ini sob /etc/php.d

Usando o nano, por exemplo: nano /etc/php.d/solr.ini

Adicione uma linha ao arquivo que contém extension=solr.so , salve e saia.

Abra o arquivo /usr/php.ini e adicione extension=solr.so a ele também, salve e saia.

Reinicie o apache ...

/etc/init.d/httpd restart

e você deve estar pronto!

    
por 15.05.2013 / 01:03
0
O módulo de ondulação

deve ser carregado ANTES do módulo solr. Então, certifique-se de que você tem algo assim em conf.d: 20-curl.ini 30-solr.ini (e não 10-solr.ini)

Ou adicione "extension = solr.so" após o seu "extension = curl.so"

    
por 17.11.2013 / 15:31