2 votes

l'extension solr php ne fonctionne pas sur la dernière Debian Wheezy

J'essaie d'utiliser l'extension PHP de Solr sur la Debian Wheezy récemment mise à jour. Elle s'installe parfaitement à partir de PECL et des sources, mais au lieu de me donner les fonctionnalités attendues, elle me donne ceci à chaque exécution de 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

De même, les scripts qui utilisent l'extension génèrent une erreur.

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

Ce que je veux dire, c'est qu'il a été mis en place auparavant et qu'il a fonctionné comme un charme. Lors de la mise à jour des paquets concernés, seules les versions de PHP et de libcurl ont été modifiées. L'instance de Solr elle-même a été laissée telle quelle.

J'ai toutes les possibilités libcurl bibliothèques :

$ 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
...

J'ai installé le php5-curl version 5.4.4-2 avec aptitude.

J'ai installé les extensions Sorl avec

sudo pecl install solr

(avec diverses combinaisons de -f y -n drapeaux et a essayé solr-beta également) et avec

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

J'installe la version 1.0.2 de l'extension car elle fonctionnait avant la mise à jour de Squeeze vers Wheezy. Comme je l'ai dit plus haut, l'extension s'installe sans aucune erreur.

J'ai déjà ajouté le extension=solr.so incantation à la /etc/php5/mods-available/solr.ini

Quelle magie dois-je faire pour que l'extension solr fonctionne ? Est-ce vrai que la seule solution que j'ai est de rétrograder la version de libcurl telle qu'elle était avant la mise à jour ?

4voto

hijarian Points 731

OK, j'ai trouvé la réponse moi-même. Le problème venait des erreurs de configuration. Sur la dernière version de Wheezy, l'arbre de configuration pour PHP est le suivant :

/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

Je devais donc faire les choses suivantes :

  • Ajouter un fichier /etc/php5/mods-available/solr.ini avec la ligne "extension=solr.so"
  • Ajouter un lien symbolique /etc/php5/conf.d/30-solr.ini pointant vers le vrai solr.ini
  • Faites la même chose pour curl.so
  • Veiller à ce que le "extension=solr.so" y "extension=curl.so" n'est pas écrit n'importe où d'autre part. C'est la cause de cet étrange message d'erreur.

Je pense que la configuration est devenue désordonnée à cause de la récente mise à jour de Squeeze vers Wheezy, parce que toute cette configuration devrait être faite par le gestionnaire de paquets.

1voto

briangallagher Points 131

J'ai eu le même problème et la même erreur.

FWIW - Ce qui a fonctionné pour moi a été de déplacer "extension=solr.so" du haut de mon fichier php.ini vers le bas - évidemment l'ordre est important et l'extension curl doit être introduite en premier.

J'espère que cela aidera quelqu'un.

0voto

Pedro Góes Points 101

Pour tous ceux qui sont sous CentOS 6.4, cela a fonctionné pour moi. Merci à hijarian, c'est une adaptation de sa réponse.

Après avoir tout installé et compilé l'extension solr.so, créez un nouveau fichier solr.ini dossier sous /etc/php.d

En utilisant nano, par exemple : nano /etc/php.d/solr.ini

Ajoutez à ce fichier une ligne contenant extension=solr.so Sauvegarder et quitter.

Ouvrir /usr/php.ini et ajouter extension=solr.so à lui aussi, sauvegarder et quitter.

Redémarrer apache...

/etc/init.d/httpd restart

et vous devriez avoir terminé !

0voto

Rano Points 1

Le module curl doit être chargé AVANT le module solr. Donc, assurez-vous d'avoir quelque chose comme ceci dans conf.d : 20-curl.ini 30-solr.ini (et non 10-solr.ini)

Ou ajoutez simplement "extension=solr.so" après votre "extension=curl.so"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X