5.6和5.5版本关于CURL的问题

际遇_ 2015-07-08 09:46:24
本人在做微信公众平台的开发,做到了上传素材的模块。
现在碰到一个问题,来请教下大家:
 
$filename='lbw/wwwroot/wx/Application/Home/View/Public/images/im3.jpg';
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$accessToken.'&type='.$type;
$data = array();
$data['media'] = '@'.$filename;

$curl = curl_init();
curl_setopt ($ch,CURLOPT_SAFE_UPLOAD,false);
curl_setopt($curl, CURLOPT_URL, $queryUrl);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_ENCODING, '');
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $filename);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
$test = curl_getinfo($curl);
print_r($test);
curl_close($curl);

微信服务器返回的一直是 media data missiing
我查了度娘说是因为curl因为Php版本的不同,设置会有所差异。
我本地是5.5的版本,试验一下没有问题,可以确定是这个问题,那么5.6中到底该怎样设置才能保证正常呢?
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
际遇_ 2015-07-08
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
http://www.haosou.com/s?q=%7B%22errcode%22%3A41005%2C%22errmsg%22%3A%22media+data+missing%22%7D&src=360chrome_zoned
这个问题有可能和php版本有关系,可以试试php的其他版本,我也遇见过这个问题,当时用php的版本是5.6.3,结果执行就报这个错误,换了5.5.1或者5.4.3都可以顺利执行,应该是curl_setopt函数在不同版本下执行有区别 吧 是网友的回答,不知道斑竹大人知不知道curl_setopt函数在不同版本下面怎么设置才可以运行呢? 因为不太好更换PHP版本
际遇_ 2015-07-08
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
$filename = realpath('相对路径文件名'); realpath -- 返回规范化的绝对路径名
按照版主的方式尝试了下 返回的内容如下: Array ( [media] => @/lbw/wwwroot/wx/Application/Home/View/Public/images/im3.jpg ) Array ( [url] => https://api.weixin.qq.com/cgi-bin/media/upload?access_token=GGB_IWkfiiPuc5nwPiDUnnyZP57uQksohpex0Z9nSMKeHO4J5vOXbdzZfRV0TLbtO9-4QdaF1FKd1DPILlmuJFc2CSK6Rl2kheogNSXnwIM&type=image [content_type] => text/plain [http_code] => 200 [header_size] => 147 [request_size] => 369 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.179517 [namelookup_time] => 2.0E-5 [connect_time] => 0.036263 [pretransfer_time] => 0.118897 [size_upload] => 59 [size_download] => 47 [speed_download] => 261 [speed_upload] => 328 [download_content_length] => 47 [upload_content_length] => 0 [starttransfer_time] => 0.179481 [redirect_time] => 0 [redirect_url] => [primary_ip] => 140.206.160.101 [certinfo] => Array ( ) ) string(47) "{"errcode":41005,"errmsg":"media data missing"}"
xuzuning 2015-07-08
  • 打赏
  • 举报
回复
$filename = realpath('相对路径文件名'); realpath -- 返回规范化的绝对路径名
际遇_ 2015-07-08
  • 打赏
  • 举报
回复
还有人在吗?
际遇_ 2015-07-08
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
media data missing 媒体数据丢失 你有 $data['media'] = '@'.$filename; 为何还是 curl_setopt($curl, CURLOPT_POSTFIELDS, $filename); 而不是 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 另外 $filename 应是绝对路径,而你的却是相对路径
curl_setopt($curl, CURLOPT_POSTFIELDS, $filename);我是在测试的,实际上我就是curl_setopt($curl, CURLOPT_POSTFIELDS, $data);这样写的,但是还是报错,$filename=dirname(__file__)这样我也试过,也是报错
xuzuning 2015-07-08
  • 打赏
  • 举报
回复
media data missing 媒体数据丢失 你有 $data['media'] = '@'.$filename; 为何还是 curl_setopt($curl, CURLOPT_POSTFIELDS, $filename); 而不是 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 另外 $filename 应是绝对路径,而你的却是相对路径
际遇_ 2015-07-08
  • 打赏
  • 举报
回复
有人吗~~~~

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧