Erreur : Elasticsearch-PHP requires cURL, or a custom HTTP handler.
Contexte
Suite a mise a jour d'Ubuntu en version 18.04.1 LTS
PHP Version 7.0.30-0ubuntu0.16.04.1
sudo apt-get install curl
⇒ curl est déjà la version la plus récente (7.58.0-2ubuntu3.3).
sudo apt-get install php-curl
⇒ php-curl est déjà la version la plus récente (1:7.2+60ubuntu1).
Erreur
A l'appel de Elasticsearch\ClientBuilder::create()→build();
j'obtient l'erreur : Elasticsearch-PHP requires cURL, or a custom HTTP handler.
Dans le fichier /vendor/elasticsearch/elasticsearch/src/Elasticsearch/ClientBuilder.php:182
if (extension_loaded('curl')) { ...blah blah blah... } else { throw new \RuntimeException('Elasticsearch-PHP requires cURL, or a custom HTTP handler.'); }
Donc j'en viens a la conclusion que extension_loaded('curl')
retourne FALSE …. Whyyyyyyy ???
Tentatives de résolution
Mise a jour de php
Je mets a jour php avec sudo apt-get install php
et il m'installe php7.2 a la place de 7.0.
Je redemarre Apache sudo service apache2 restart
.
A ce point rien ne change, ni la version de php recupérée par un phpinfo()⇒PHP Version 7.0.30-0ubuntu0.16.04.1, ni l'erreur extension_loaded('curl').
Pourtant un php -v
en ligne de commande me sort:
PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.10-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
Je tente un Reboot
… Pas de changement
Passage de PHP7.0 -> PHP7.2 dans Apache2
- Désactivation du module Apache php7.0 avec
sudo a2dismod php7.0
- Activation du module Apache php7.2 avec
sudo a2enmod php7.2
- Redémarrage d'Apache2
sudo systemctl restart apache2
Voila ce que ça donne en lignes de commande.
thierry@obi103:~$ sudo a2dismod php7.0 Module php7.0 disabled. To activate the new configuration, you need to run: systemctl restart apache2 thierry@obi103:~$ sudo a2enmod php7.2 Considering dependency mpm_prefork for php7.2: Considering conflict mpm_event for mpm_prefork: Considering conflict mpm_worker for mpm_prefork: Module mpm_prefork already enabled Considering conflict php5 for php7.2: Enabling module php7.2. To activate the new configuration, you need to run: systemctl restart apache2 thierry@obi103:~$ sudo systemctl restart apache2
Résolu !
Maintenant tout refonctionne bien, le phpinfo me donne PHP Version 7.2.10-0ubuntu0.18.04.1
Et extension_loaded('curl')
me retourne bien TRUE
Bon tout cela ne nous dit pas pourquoi cUrl ne fonctionnait pas avec PHP7.0.
Peut etre la raison est contenue la dessous ?
thierry@obi103:~$ sudo apt-get install php7.0-curl Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Aucune version du paquet php7.0-curl n'est disponible, mais il existe dans la base de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète ou qu'il n'est disponible que sur une autre source
Et pour vous ça fonctionne ? Mettez le en commentaires !