共计 1884 个字符,预计需要花费 5 分钟才能阅读完成。
Emmm,这个竟然折腾了几个小时。本来计划将网站的静态文件访问顺序调为
网站 —->CDN—-COS
感觉这样一弄 CDN 和COS之间回源要收费,CDN 本身流量也要收费,就是传说中的双向收费。想了一下CDN还是算了吧,但是自己之前买的一年的CDN啊!哭。。。。
一顿瞎改,替换COS链接为CDN链接,巴拉巴拉一堆,然后更换ECC证书等一些列操作之后首页缩略图挂了。
然后我以为是设置COS防盗链设置出了问题,我取消防盗链还是会出现错误。
Timthumb我也没怎么修改源码,但是还是出现了错误:
An error occured fetching image.
看源码在这个位置:
protected function tryServerCache(){
//写日志,记录将读取服务端缓存,级别3
this->debug(3, "Trying server cache");
//如果缓存文件存在
if(file_exists(this->cachefile)){
//写日志,记录缓存文件存在
this->debug(3, "Cachefile {this->cachefile} exists");
//如果请求的是外部图片地址
if(this->isURL){
//写日志,记录这是一次外部请求,级别3this->debug(3, "This is an external request, so checking if the cachefile is empty which means the request failed previously.");
//如果缓存文件的大小小于1,也就是说是一个无效的缓存文件
if(filesize(this->cachefile)<1){ //写日志,记录这是一个空的缓存文件,级别3this->debug(3, "Found an empty cachefile indicating a failed earlier request. Checking how old it is.");
//如果已到了配置文件中清理无效缓存的时间
if(time() - @filemtime(this->cachefile)>WAIT_BETWEEN_FETCH_ERRORS){
//写日志,记录这次删除操作,级别3this->debug(3, "File is older than " . WAIT_BETWEEN_FETCH_ERRORS . " seconds. Deleting and returning false so app can try and load file.");
//删除此缓存文件
@unlink(this->cachefile);
//返回假,说明没有读取到服务端缓存
return false;
//否则,空的缓存文件说明上次请求失败,所以要写错误记录
} else {
//写日志,记录空的缓存文件依然有效,级别3this->debug(3, "Empty cachefile is still fresh so returning message saying we had an error fetching this image from remote host.");
//设置404错误
this->set404();
//设置错误信息this->error("An error occured fetching image.");
//返回假代表没有得到缓存
return false;
}
}
//否则就是正确的缓存文件
} else {
//写日志,记录将要直接读取缓存文件,级别3
this->debug(3, "Trying to serve cachefile {this->cachefile}");
}
//如果输出图像缓存成功
if(this->serveCacheFile()){
//写日志,记录缓存文件信息,级别3this->debug(3, "Succesfully served cachefile {this->cachefile}");
return true;
//如果不成功
} else {
//写日志,记录错误信息,级别3this->debug(3, "Failed to serve cachefile {this->cachefile} - Deleting it from cache.");
//删除此无效缓存,以便下次请求能重新创建
@unlink(this->cachefile);
//同样返回真,因为在serverCacheFile已经记录了错误信息
return true;
}
}
}
所以初步判断可能是缓存出了问题。搜了不少的解决方案啥的都没有有效解决,最终解决的办法竟然是
删掉同路径下的Cache文件夹即可。