<?php
$filename = "xx.gif";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
// $data is file data
$pvars = array('image' => base64_encode($data), 'key' => IMGUR_API_KEY);
$timeout = 30;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://api.imgur.com/2/upload.xml');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
$xml = curl_exec($curl);
curl_close ($curl);
var_dump($xml);
?>
Ich spiele mit der Imgur-API, aber es scheint nicht zu funktionieren. PHP.net sagt, dass dies curl_init()
in PHP5 ist, aber mein Host sagt, dass dies nicht der Fall ist. Wie kann ich das zum Laufen bringen?
In alten Versionen von Debian und Ubuntu haben Sie dieses Problem gelöst, indem Sie die Curl-Erweiterung für PHP installiert und den Webserver neu gestartet haben. Angenommen, der Webserver ist Apache 2:
In neueren Versionen wurde der Paketname geändert:
Möglicherweise müssen Sie mehr installieren:
quelle
sudo service apache2 restart
das genauso gut funktionieren sollte?restart
und prüfen, ob sie für Sie funktionieren.sudo service apache2 restart
startet Apache lediglich neu. Es ist erforderlich, dies [nach der CURL-Installation] auszuführen, damit Aache / PHP die hinzugefügten CURL-Pakete abrufen kann, damit sie funktionieren, wenn das mit CURL infundierte PHP-Skript das nächste Mal ausgeführt wird. Aber ich fand auch, dass ichphp5-curl
Ich habe noch nicht genug Ruf, um einen Kommentar abzugeben. Mit Ubuntu und einem einfachen:
Hat bei mir NICHT funktioniert.
Aus irgendeinem Grund
curl.so
wurde an einem Ort installiert, der nicht standardmäßig abgeholt wurde. Ich habe dasextension_dir
in meiner php.ini überprüft und über dascurl.so
in mein kopiertextension_dir
cp /usr/lib/php5/20090626/curl.so /usr/local/lib/php/extensions/no-debug-non-zts-20090626
Hoffe das hilft jemandem, passen Sie Ihre Pfadpositionen entsprechend an.
quelle
Für Ubuntu
Installieren Sie die Curl-Erweiterung für PHP und starten Sie den Apache-Server neu.
Für Windows
Das Problem tritt auf, weil die Datei lib_curl.dll nicht in PHP enthalten ist. Laden Sie auch die folgende Erweiterung, wenn sie nicht funktioniert.
php.ini
Entfernen Sie daher die Erweiterung in oder entfernen Sie den Kommentar, falls dieser bereits in derphp.ini
Datei vorhanden ist.Starten Sie nun den Apache-Server neu. Wenn die Fehlermeldung "php_curl.dll kann nicht geladen werden" angezeigt wird, kopieren Sie die Bibliotheken SSLEAY32.PHP, libEAY32.dll (OpenSSL) in den Ordner System32.
quelle
für PHP 7.0 auf Ubuntu verwenden
sudo apt-get install php7.0-curl
Und schlussendlich,
oder
quelle
Ich habe dies unter Ubuntu 16.04 mit PHP 7.1.14 erlebt. Um dies zu beheben, fügen Sie dies zuerst in ein Skript ein und führen Sie es aus. Es wird true zurückgegeben, wenn curl installiert und aktiviert ist. Andernfalls wird false zurückgegeben.
<?php var_dump(extension_loaded('curl')); ?>
Wenn false zurückgegeben wird, führen Sie aus
sudo apt-get install php7.1-curl
Und schlussendlich,
Nach dem Neustart gibt das Skript true zurück und hoffentlich sollte Ihr Fehler behoben sein.
quelle
Es gibt eine Lösung mit allen erforderlichen Details für Windows 7 x64:
http://www.youtube.com/watch?v=7qNTi1sEfE8
Es ist auf Französisch, aber Sie können alles verstehen! Ich habe das gleiche Problem gelöst, spreche sogar kein Französisch. :-)
In vielen Antworten wird vergessen zu erwähnen, dass Sie an diesem Speicherort eine neue Version der Datei php_curl.dll hinzufügen müssen: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64 -64-Bit-für-Windows /
Ich habe eine neue Version von php_curl.dll aus dem Archiv php_curl-5.4.3-VC9-x64.zip in die Ordner C: \ wamp \ bin \ php \ php5.4.3 \ ext und C: \ Windows \ System32 hinzugefügt und alles war in Ordnung!
quelle
mach das
und Server neu starten
quelle
Dies ist von der offiziellen Website. php.net
Nach der Installation von PHP.
Windows
Wechseln Sie in den Ordner Windows \ system32: libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
Linux
Wechseln Sie in den Ordner libssh2.dll von Apache24 \ bin
Dann kommentieren Sie die Erweiterung = php_curl.dll in der php.ini aus
quelle
$ch = curl_init('http://api.imgur.com/2/upload.xml'); //initialising our url curl_setopt($ch, CURLOPT_MUTE, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //used for https headers curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //used for https headers curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($pvars)); //the value we post curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //waiting for reponse, default value in php is zero ie, curls normally do not wait for a response curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'); $output = curl_exec($ch); //the real execution curl_close($ch); echo $output;
Versuchen Sie diesen Code. Ich bin mir nicht sicher. Aber ich habe es verwendet, um XML-Daten an eine Remote-URL zu senden.
quelle