致命错误:在第9行调用...中的未定义函数curl_init()

时间:2010-12-09 09:44:38

标签: php linux ubuntu curl debian

<?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中,但我的主持人说它不是。我怎样才能做到这一点?

9 个答案:

答案 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版本无关。

http://www.php.net/manual/en/curl.setup.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)

解决方案包含Wi​​ndows 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.net

安装PHP后。

移至Windows \ system32文件夹: libssh2.dll,php_curl.dll,ssleay32.dll,libeay32.dll

的Linux

移至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。