Installer curl sur PHP cli

J’essaie de configurer un cronjob qui nécessite une boucle, et je l’appelle directement depuis crontab avec

* * * * * /usr/bin/php myurl/my_cron.php 

Le problème est que le module curl n’est pas installé pour mon phpcli.

Cela fonctionne très bien quand je frappe l’URL de mon navigateur, mais quand je cours

 php -q myfile.php 

à partir de la ligne de commande, il renvoie

 PHP Fatal error: Call to undefined function curl_init() in my_cron.php on line 20 

Lorsque je lance php -m le module curl ne s’affiche pas. Cependant, quand je vais dans le navigateur et que je vide le php_info (), le module apparaît et dit que son installation est correcte.

L’autre kicker est que j’ai essayé d’installer curl avec apt-get sur le serveur (Ubuntu 12.04 php 5.4), il semble décrocher mon PHP car il commence simplement à télécharger le fichier index.php où j’essaie de parcourir pour.

Voici les tentatives que j’ai faites pour installer curl qui ont arrêté PHP:

 sudo apt-get install php-curl sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 

Après chaque redémarrage du serveur apache2 et toujours sans dés, il a tenté de télécharger le fichier au lieu d’ouvrir la page.

Comment puis-je installer php5-curl uniquement sur le cli, afin que mon serveur puisse l’exécuter et que je n’ai pas besoin de passer par un navigateur?

L’autre possibilité est que je pourrais lancer les cronjobs via wget à partir du fichier crontab, mais j’ai entendu dire que ce n’était pas la meilleure option et qu’elle était potentiellement peu fiable.

Toute aide est très appréciée. Merci!

J’ai eu le même problème. Mais finalement, j’ai résolu le problème en lançant la commande suivante.

 sudo apt-get install php7.0-curl 

Redémarrez le serveur après l’installation. Cette réponse peut ne pas être utile pour l’utilisateur qui l’a demandé parce qu’il l’a demandé il y a deux mois. Mais cela peut être utile pour les utilisateurs qui liront ceci dans le futur.

Voici comment j’ai résolu ce problème avec Ubuntu 14.04 lorsque curl fonctionnait dans des fichiers PHP exécutés via apache, mais pas lorsqu’ils étaient appelés par le cli.

ssh sur votre serveur et cd sur /

 find / -name 'curl.so' 

Exécutez la commande find ci-dessus pour localiser l’emplacement du fichier binary curl. Si vous ne trouvez pas le fichier, vous devrez peut-être installer curl et exécuter à nouveau la commande find.

 apt-get install php5-curl 

Vous voulez maintenant éditer le fichier php.ini utilisé pour les fichiers php exécutés à partir du fichier cli (il est différent de celui utilisé par apache), et il est probable qu’il se trouve dans /etc/php5/cli/php.ini

 nano /etc/php5/cli/php.ini 

Vous pouvez aussi courir

 php -i | grep 'php.ini' 

Pour obtenir le chemin du fichier, juste pour être sûr.

Dans votre fichier php.ini, recherchez [curl] en appuyant sur ctrl + w

Vous voulez maintenant append l’extension au fichier et cela devrait ressembler à ceci, bien que votre chemin vers le fichier curl.so et autre puisse être un peu différent:

 [curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. ;curl.cainfo = extension=/usr/lib/php5/20131226/curl.so 

Après avoir fait ce qui précède, j’ai pu utiliser curl dans les scripts PHP exécutés à partir du cli.

Si vous utilisez l’interface de ligne de commande (‘cli’) pour php5 , au lieu de

 php -q myfile.php 

veuillez utiliser:

 php5 -q myfile.php 

php5-curl semble activer le module curl pour les cli php5 et non php et les deux (peuvent) charger différentes configurations et modules.

J’utilise Ubuntu 14.04 et PHP 5.3. Après la mise à niveau vers PHP 5.6.29, j’ai aussi un problème avec php curl. Ma structure de répertoires après mise à jour vers PHP 5.6.29:

/ etc / php5 – ancienne version (5.3)

/etc/php/5.6 – nouvelle version

La prochaine commande

 sudo apt-get install php5-curl 

n’a pas aidé (on dirait qu’il se connecte à l’ancienne version de PHP – 5.3).

J’ai trouvé l’article suivant: php 5.6 for magento

Il conseille d’utiliser la commande

apt-get -y install php5.6-curl

au lieu de

apt-get -y install php5-curl

Ça marche pour moi!

La première chose que vous devriez toujours vérifier est votre fichier php.ini. Vous devriez avoir un fichier php.ini dans votre racine Web. Curl est installé par défaut sur la plupart des serveurs Web. Je n’ai pas trouvé de serveur web avec PHP qui n’avait pas encore installé curl. Ce n’est pas toujours activé, cependant.

Vérifiez votre fichier php.ini et recherchez php_curl.dll, il devrait ressembler à ceci:

;extension=php_curl.dll

Supprimez simplement le point-virgule (;) avant “extension” et enregistrez le fichier. Ça devrait marcher tout de suite. Selon votre phpinfo.php, il est déjà installé, il doit donc être activé.

Une question similaire peut être trouvée ici si vous êtes intéressé: Appel à la fonction non définie curl_init ()

d’abord trouver la version de votre php cli par:

 php -v 

par exemple si c’était la version 7 alors:

 sudo apt-cache search php7 

cela vous donnera les noms de modules appropriés pour votre version actuelle:

 php7.0-curl - CURL module for PHP <---- the name of curl module. php7.0-dev - Files for PHP7.0 module development php7.0-gd - GD module for PHP php7.0-gmp - GMP module for PHP php7.0-json - JSON module for PHP php7.0-ldap - LDAP module for PHP php7.0-mysql - MySQL module for PHP . . so on 

pour append un support curl , copiez le nom du module curl de la liste ci-dessus, puis procédez comme suit:

 sudo apt-get install php7.0-curl 

Dans le cas où quelqu’un est arrivé ici pour trouver la version Windows de curl en cours d’exécution.

Ouvrez php.ini et supprimez le; avant extension=php_curl.dll autour de la ligne 656.

Je suis à peu près sûr de ce que les charges Apache sont C:\wamp\bin\apache\Apache2.2.17\bin\php.ini donc vous pouvez trouver curl fonctionne à partir du navigateur.

Mais lorsque php est lancé depuis la ligne de commande, il peut afficher la fonction inconnue curl_init();

Exécutez php -r "echo php_ini_loaded_file();" dans la ligne de commande pour voir quel fichier ini est en cours de chargement.

Habituellement, il se trouve dans C:\wamp\bin\php\php5.3.5\php.ini un fichier différent de celui utilisé par Apache. Alors ouvrez-le puis retirez le; avant extension = php_curl.dll autour de la ligne 656.

J’espère que ça aide quelqu’un.