it-swarm.com.de

Curl an installieren PHP cli

Ich versuche einen Cronjob einzurichten, der curl erfordert, und ich rufe ihn direkt von Crontab aus an 

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

Das Problem ist, es sieht so aus, als ob das Curl-Modul für mein PHPCli nicht installiert ist. 

Es funktioniert gut, wenn ich von meinem Browser aus auf die URL klicke, aber wenn ich renne 

php -q myfile.php

von der Befehlszeile kehrt er zurück 

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

Beim Ausführen von php -m wird das Curl-Modul nicht angezeigt. Wenn ich jedoch zum Browser gehe und die php_info () ablege, erscheint das Modul und sagt, es sei korrekt installiert.

Der andere Kicker ist, dass ich versucht habe, curl mit apt-get auf dem Server zu installieren (Ubuntu 12.04 php 5.4). Es scheint, dass meine PHP heruntergefahren wird index.php Datei, wo immer ich versuche zu browsen.

Hier sind die Versuche, die ich gemacht habe, um curl zu installieren, die PHP heruntergefahren haben:

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

Nachdem jeder dieser Server den Apache2-Server neu gestartet hatte und immer noch kein Würfel war, versuchte er, die Datei herunterzuladen, anstatt die Seite zu öffnen.

Wie kann ich php5-curl nur auf dem CLI installieren, damit mein Server es ausführen kann und ich keinen Browser verwenden muss?

Die andere Möglichkeit ist, dass ich die Cronjobs durch die Crontab-Datei durch Wget ausführen könnte, aber ich habe gehört, dass dies nicht die beste Option und möglicherweise unzuverlässig ist.

Jede Hilfe wird sehr geschätzt. Vielen Dank! 

16
user2966822

Ich hatte das gleiche Problem. Aber schließlich löste ich es, indem ich den folgenden Befehl ausführte.

Sudo apt-get install php7.0-curl

Starten Sie den Server nach der Installation neu. Diese Antwort ist möglicherweise für den Benutzer, der gefragt hat, nicht hilfreich, weil er sie vor zwei Monaten gefragt hat. Dies kann jedoch für Benutzer nützlich sein, die dies in Zukunft lesen.

43
Sriraman

So habe ich dies auf Ubuntu 14.04 behoben, als curl in PHP-Dateien arbeitete, die durch Apache laufen, aber nicht, wenn sie vom CLI aufgerufen werden.

ssh zu ihrem server und cd zu /

find / -name 'curl.so'

Führen Sie den obigen Suchbefehl aus, um herauszufinden, wo die Curl-Binärdatei hängt. Wenn Sie die Datei nicht finden können, müssen Sie möglicherweise curl installieren und den Befehl find erneut ausführen.

apt-get install php5-curl

Sie möchten nun die php.ini bearbeiten, die für die von einem CLI ausgeführten php-Dateien verwendet wird (anders als die von Apache verwendete). Sie befindet sich wahrscheinlich unter /etc/php5/cli/php.ini

nano /etc/php5/cli/php.ini

Sie können auch laufen

php -i | grep 'php.ini'

Um den Dateipfad abzurufen, nur um sicher zu gehen.

Suchen Sie in Ihrer php.ini-Datei nach [curl], indem Sie Strg + w drücken

Sie möchten jetzt die Erweiterung zu der Datei hinzufügen, und diese sollte in etwa wie folgt aussehen, auch wenn Ihr Pfad zur curl.so-Datei etwas anderes ist:

[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

Nachdem ich das oben getan hatte, konnte ich curl in PHP-Skripten verwenden, die von CLI aus ausgeführt wurden.

15
rmmoul

Ich benutze Ubuntu 14.04 und PHP 5.3. Nach dem Upgrade auf PHP 5.6.29 habe ich auch ein Problem mit PHP Curl. Meine Verzeichnisstruktur nach dem Update auf PHP 5.6.29:

/ etc/php5 - alte Version (5.3)

/etc/php/5.6 - neue Version

Der nächste Befehl

Sudo apt-get install php5-curl

hat nicht geholfen (sieht so aus, als ob es sich mit der alten PHP-Version - 5.3 verbindet).

Ich habe nächsten Artikel gefunden: php 5.6 für magento

Es empfiehlt sich, den Befehl zu verwenden 

apt-get -y install php5.6-curl

anstatt 

apt-get -y install php5-curl

Für mich geht das!

3
Vaha

Wenn Sie die Befehlszeilenschnittstelle ('cli') für php5 verwenden, anstatt 

php -q myfile.php

benutzen Sie bitte:

php5 -q myfile.php

php5-curl scheint das curl-Modul für das cli php5 und nicht php zu aktivieren, und beide können unterschiedliche Konfigurationen und Module laden.

3
Rocky Inde

Das erste, was Sie immer überprüfen sollten, ist Ihre php.ini-Datei. Sie sollten eine php.ini-Datei in Ihrem Webstammverzeichnis haben. Curl wird standardmäßig auf den meisten Webservern installiert. Ich habe keinen Webserver mit PHP gefunden, auf dem curl noch nicht installiert ist. Es ist jedoch nicht immer aktiviert.

Überprüfen Sie Ihre php.ini-Datei und suchen Sie nach php_curl.dll. Diese sollte folgendermaßen aussehen:

;extension=php_curl.dll

Entfernen Sie einfach das Semikolon (;) vor "Erweiterung" und speichern Sie die Datei. Es sollte sofort funktionieren. Laut Ihrer phpinfo.php ist sie bereits installiert, daher muss sie wahrscheinlich nur aktiviert werden.

Eine ähnliche Frage kann hier gefunden werden, wenn Sie interessiert sind: Aufruf an undefinierte Funktion curl_init ()

1
JaidynReiman

finden Sie zuerst die Version Ihres php cli durch:

php -v

wenn es zum Beispiel Version 7 war, dann:

Sudo apt-cache search php7

dadurch erhalten Sie die richtigen Modulnamen für Ihre aktuelle Version:

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

so hinzufügen locken  Support, kopiere den Namen des Curl-Moduls aus der Liste oben und mache dann Folgendes:

Sudo apt-get install php7.0-curl
1
Mustafa.R

Für den Fall, dass jemand hier war, um die Windows-Version von curl zu finden.

Öffnen Sie php.ini und entfernen Sie das; vor extension=php_curl.dll um die Zeile 656.

Ich bin mir ziemlich sicher, was Apache lädt C:\wamp\bin\Apache\Apache2.2.17\bin\php.ini, daher kann es sein, dass Curl vom Browser aus funktioniert.

Wenn PHP jedoch von der Befehlszeile aus ausgeführt wird, kann es eine unbekannte Funktion curl_init(); anzeigen.

Führen Sie php -r "echo php_ini_loaded_file();" in der Befehlszeile aus, um zu sehen, welche Ini-Datei geladen wird.

Normalerweise befindet es sich in C:\wamp\bin\php\php5.3.5\php.ini und unterscheidet sich von der von Apache verwendeten Datei. Also öffne es und entferne das; vor der Erweiterung = php_curl.dll um die Zeile 656.

Hoffe es hilft jemandem.