当前位置: 首页>>技术教程>>正文


php – 致命错误:调用未定义的函数 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,但似乎无法正常工作。 PHP.net说curl_init()在PHP5中,但我的主人说不是。我该如何工作?

最佳办法

curl是需要安装的扩展,与PHP版本无关。

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

次佳办法

在Debian和Ubuntu的旧版本上,您可以通过安装PHP的Curl扩展名并重新启动Web服务器来解决此问题。假设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

希望这可以帮助某人,相应地调整您的路径位置。

第四种办法

对于Ubuntu

安装PHP和Camp的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文件夹中。

第五种办法

在ubuntu上使用php 7.0

sudo apt-get install php7.0-curl

最后,

sudo service apache2 restart 

要么

sudo service nginx restart

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9399.html,未经允许,请勿转载。