首先来看报错
错误定位在这行
$host = $zone->srcUpHosts[0];
接着把$zone
打印了下
null值,也就是说七牛的这个sdk在这里没查找到对应的上传域名(七牛sdk中绑定的域名)
- 解决方法就是想办法让七牛初始化的时候拿到上传的域名
第一种改代码:- 在七牛的php-sdk包中找到src/Qiniu/Zone.php文件,找到属于你OSS的机房区域
然后修改上传初始化对象代码,手动指定属于你的上传域名
- 在七牛的php-sdk包中找到src/Qiniu/Zone.php文件,找到属于你OSS的机房区域
//初始化上传对象时
$token = self::qiNiuUpToken(); //我这里是封装,根据自己项目的代码逻辑来
$zone = new Zone(array('upload-z2.qiniup.com'));
$cfg = new Config($zone);
$upManager = new UploadManager($cfg);
//之后是正常调用
list($ret, $error) = $upManager->putFile($token, $key, $file_path);
- 第二种是,在服务器上用wget或则ping
http://net.qiniuts.com/
这个域名或则是src/Qiniu/Zone.php
文件中属于你的域名看看是否能通。
不通就说明是你的服务器dns解析不了七牛的域名,可以让你们公司的运维看看是什么具体原因不解析,我这边直接改了个Linux的配置文件就行了/etc/resolv.conf
中加了行nameserver 8.8.8.8
希望能帮到遇到相同问题的后来者,强调:错误定位明确了就好处理了。