curl_setopt()API已弃用错误

时间:2014-06-10 05:36:35

标签: php facebook

在使用PHP 5.5.0的Facebook PHP SDK中使用upload方法时发现此错误。这是一个简单的解决方法,直到Facebook决定退出并更新SDK。

这是尝试使用PHP 5.5.0上传图像或视频时会收到的错误类型:

curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead 

该修补程序由某人发布:http://snippetrepo.com/snippets/deprecated-curl-setopt-fix-in-facebook-php-sdk

这是由Facebook修复的吗?

1 个答案:

答案 0 :(得分:0)

在使用PHP 5.5.0的Facebook PHP SDK中使用upload方法时发现此错误。这是一个简单的解决方法,直到Facebook决定放弃并更新SDK

这是尝试使用PHP 5.5.0上传图像或视频时会收到的错误类型:

  

curl_setopt():不推荐使用@filename API进行文件上传。请改用CURLFile类

要将修复程序导航到base_facebook.php文件并搜索:

if ($this->getFileUploadSupport()){
    $opts[CURLOPT_POSTFIELDS] = $params;
} else {
    $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
}

并替换为以下修复程序:

if ($this->getFileUploadSupport()){
  if(!empty($params['source'])){
     $nameArr = explode('/', $params['source']);
     $name    = $nameArr[count($nameArr)-1]; 
     $source  = str_replace('@', '', $params['source']);
     $size    = getimagesize($source); 
     $mime    = $size['mime'];
     $params['source'] = new CurlFile($source,$mime,$name);
  }

  if(!empty($params['image'])){
     $nameArr = explode('/', $params['image']);
     $name    = $nameArr[count($nameArr)-1]; 
     $image   = str_replace('@', '', $params['image']);
     $size    = getimagesize($image); 
     $mime    = $size['mime'];
     $params['image'] = new CurlFile($image,$mime,$name);
  }
  $opts[CURLOPT_POSTFIELDS] = $params;
} else {
    $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
}

http://snippetrepo.com/snippets/deprecated-curl-setopt-fix-in-facebook-php-sdk