您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

用新浪微博接口发送图片微博失败的原因

来源:未知 责任编辑:责任编辑 发表时间:2013-08-27 15:57 点击:

昨天项目开发时遇到一个发送图片微博失败的奇怪问题,在本机发送图片微博是好的,但是放到测试机就是无法发送,代码如下

 

  1. <?php  
  2. include_once'app/config.php' );  
  3. include_once'app/inc/saetv2.ex.class.php' );  
  4. include_once'app/inc/RedisSession.php');  
  5. $redisSession=new RedisSession($redis);  
  6. $token=$redisSession->getObject("token");  
  7. $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $token['access_token'] );  
  8. var_dump($infto = $c->upload("tesdfsssfst","http://www.test.com/192.168.60.103/2012080948f5e0b3-282d-0422-bb4c-6651d7caa6ff.jpg"));  
  9. ?> 

但是运行是无法发送成功:

 

  1. array(3) { ["error"]=> string(50) "unsupported image type, only suport JPG, GIF, PNG!" ["error_code"]=> int(20005) ["request"]=> string(23) "/2/statuses/upload.json" } 

要发送的图片在我的浏览器里是可以访问的,我查看upload的代码发现使用的是file_get_contents函数

于是我在代码里加了

 

  1. echo file_get_contents("http://www.test.com/192.168.60.103/2012080948f5e0b3-282d-0422-bb4c-6651d7caa6ff.jpg"); 

奇怪的是我把url改为绝对路径,却是能够获取到图片

 

  1. echo file_get_contents("/opt/htdocs/www.test.com/192.168.60.103/2012080948f5e0b3-282d-0422-bb4c-6651d7caa6ff.jpg"); 

于是我在服务器上测试发现这个域名是使用127.0.0.1,而我的机器上配置的hosts是192.168.60.5

 

  1. [root@operation5 conf]# curl -kvL http://www.test.com  
  2. * About to connect() to www.test.com port 80  
  3. * Trying 127.0.0.1... connected  
  4. * Connected to www.test.com (127.0.0.1) port 80  
  5. > GET / HTTP/1.1  
  6. User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5  
  7. > Host: www.test.com  
  8. > Accept: */* 

这时我开始怀疑:当访问的服务器ip不是192.168.60.5时会访问到另外一个网站的内容了,因为www.test.com没有使用Flea框架。

查看了一下apache配置,果然:

 

  1. 192.168.60.5:80 is a NameVirtualHost  
  2.          default server 192.168.60.5 (/opt/httpd/conf/extra/vhost/_default.conf:1)  
  3.          port 80 namevhost 192.168.60.5 (/opt/httpd/conf/extra/vhost/_default.conf:1)  
  4.          port 80 namevhost www.test.com (/opt/httpd/conf/extra/vhost/www.test.com.conf:1)  
  5. 192.168.60.5:82 www.test2.com (/opt/httpd/conf/extra/vhost/www.test2.com.conf:18)  
  6. 192.168.60.5:443 www.test3.com (/opt/httpd/conf/extra/vhost/www.test3.com.conf:74)  
  7. wildcard NameVirtualHosts and _default_ servers:  
  8. *:80 www.test4.com(/opt/httpd/conf/extra/vhost/www.test4.com.conf:308)  
  9. Syntax OK 

见最后一行是*:80,所以就出现配hosts:www.test.com 127.0.0.1时,访问www.test.com访问到的内容为www.test4.com的内容

把*:80改为192.168.60.5:80就好了

或者把所有的192.168.60.5:80都改为*:80;

所以是用*.80还是ip:80必须要统一否则出现莫名其妙的问题

end

本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/1045826

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1