<?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);
?>
我正在使用Imgur API,但它似乎不起作用。 PHP.net说curl_init()
在PHP5中,但我的主持人说它不是。我怎样才能做到这一点?
答案 0 :(得分:122)
在Debian和Ubuntu的旧版本上,您通过安装PHP的Curl扩展并重新启动Web服务器来解决此问题。假设网络服务器是Apache 2:
sudo apt-get install php5-curl
sudo service apache2 restart
在较新版本中,程序包名称已更改:
sudo apt install php-curl
您可能需要安装更多:
sudo apt-get install curl libcurl3 libcurl3-dev;
答案 1 :(得分:38)
curl是一个需要安装的扩展,它与PHP版本无关。
答案 2 :(得分:14)
尚未有足够的声誉发表评论。使用Ubuntu和一个简单的:
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
不适合我。
出于某种原因,curl.so
安装在默认情况下未选中的位置。我检查了我的php.ini中的extension_dir
并将curl.so
复制到我的extension_dir
cp /usr/lib/php5/20090626/curl.so /usr/local/lib/php/extensions/no-debug-non-zts-20090626
希望这有助于某人,相应地调整您的路径位置。
答案 3 :(得分:12)
适用于Ubuntu
为PHP&amp;安装Curl扩展重启apache服务器。
sudo apt-get install php5-curl
sudo service apache2 restart
适用于Windows
由于不将lib_curl.dll包含在PHP中而出现问题。
如果不起作用,也会加载以下扩展名,因此php.ini
中的扩展名会移除php.ini
文件中已存在的评论,然后移除评论。
extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll
现在重启apache服务器。 如果您收到错误“无法加载php_curl.dll”, 将SSLEAY32.PHP,libEAY32.dll(OpenSSL)库复制到System32文件夹。
答案 4 :(得分:3)
在ubuntu上使用php 7.0
sudo apt-get install php7.0-curl
最后
sudo service apache2 restart
或
sudo service nginx restart
答案 5 :(得分:2)
解决方案包含Windows 7 x64的所有必要详细信息:
http://www.youtube.com/watch?v=7qNTi1sEfE8
这是法语,但你可以理解一切!我解决了同样的问题,甚至不会说法语。 : - )
许多答案忘了提及你需要从这个位置添加新版本的php_curl.dll文件:http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/
我将php_curl.dll的新版本从存档php_curl-5.4.3-VC9-x64.zip添加到文件夹:C:\ wamp \ bin \ php \ php5.4.3 \ ext和C:\ Windows \ System32以及所有内容很好!
答案 6 :(得分:2)
这样做
sudo apt-get install php-curl
并重启服务器
sudo service apache2 restart
答案 7 :(得分:-2)
安装PHP后。
移至Windows \ system32文件夹: libssh2.dll,php_curl.dll,ssleay32.dll,libeay32.dll
移至Apache24 \ bin文件夹 libssh2.dll
然后取消注释php.ini中的extension = php_curl.dll
答案 8 :(得分:-3)
$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;
试试这段代码。我不确定。但我用它将xml数据发送到远程URL。