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 !

Vous pourriez laisser un commentaire si vous étiez connecté.