问题描述
<?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