致命错误: 调用未定义的函数 curl_init()

<?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,但它似乎不起作用。Net 说 curl_init()在 PHP5中,但是我的主机说它不在。我该怎么做?

178252 次浏览

Curl 是一个需要安装的扩展,它与 PHP 版本无关。

Http://www.php.net/manual/en/curl.setup.php

$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。

为了 Ubuntu

为 PHP 安装 Curl 扩展并重新启动 Apache 服务器。

sudo apt-get install php5-curl
sudo service apache2 restart

适用于视窗

问题出现是因为没有将 lib _ curl.dll 包含到 PHP 中。 如果不工作,也加载以下扩展名,所以那些扩展名在 php.ini或删除注释,如果已经存在于 php.ini文件,然后删除注释。

extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll

现在重新启动 apache 服务器。 如果得到一个错误“ Unable to Load php _ curl.dll”, 将 SSLEAY32.PHP,libEAY32.dll (OpenSSL)库复制到 System32文件夹。

在 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;

还没有足够的声誉来评论。使用 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

希望这对某些人有所帮助,相应地调整你的路径位置。

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-5.4.3-VC9-x64.zip 中添加了新版本的 php _ curl.dll 到文件夹: C: wamp bin php php5.4.3 ext 和 C: Windows System32,一切都很好!

这是来自官方网站 php.net

安装 PHP 后。

窗户

移至 WindowsSystem32文件夹: Libssh2.dll,php _ curl.dll,ssleay32.dll,libeay32.dll

Linux

移动到 Apache24 bin 文件夹 Libssh2.dll

然后在 php.ini 中取消扩展名 = php _ curl.dll 的注释

做这个

sudo apt-get install php-curl

然后重启服务器

sudo service apache2 restart

在运行 PHP 7.1.14的 ubuntu 16.04上体验到了这一点。要解决这个问题,首先将其放入脚本并执行。如果已安装并启用 curl,它将返回 true,否则,它将返回 false。

<?php
var_dump(extension_loaded('curl'));
?>

如果返回 false,则运行

sudo apt-get install php7.1-curl

最后,

sudo service apache2 restart

重新启动之后,脚本将返回 true,希望您的错误能够得到解决。

在 ubuntu 上使用 php 7.0

sudo apt-get install php7.0-curl

最后,

sudo service apache2 restart

或者

sudo service nginx restart