致命错误:在第9行调用未定义的函数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服务器来解决这个问题。 假设networking服务器是Apache 2:

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

这可能需要安装更多:

 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 

希望这可以帮助别人,相应地调整你的path位置。

对于Ubuntu

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

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

对于Windows

问题出现,因为不包括lib_curl.dll到PHP。 如果不工作也加载下面的扩展名,

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

现在重新启动Apache服务器。 如果出现“无法加载php_curl.dll”错误,请将SSLEAY32.PHP,libEAY32.dll(OpenSSL)库复制到System32文件夹。

有Windows 7 x64的所有必要的细节的解决scheme:

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位的窗口/

我从档案php_curl-5.4.3-VC9-x64.zip添加新版本的php_curl.dll到文件夹:C:\ wamp \ bin \ php \ php5.4.3 \ ext和C:\ Windows \ System32,一切都很好!

做这个

 sudo apt-get install php-curl 

并重启服务器

 sudo service apache2 restart 

这是来自官方网站。 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

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