Timthumb 失效的问题

269次阅读
没有评论

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){ //写日志,记录这是一次外部请求,级别3 $this->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){ //写日志,记录这是一个空的缓存文件,级别3 $this->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){ //写日志,记录这次删除操作,级别3 $this->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 { //写日志,记录空的缓存文件依然有效,级别3 $this->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()){ //写日志,记录缓存文件信息,级别3 $this->debug(3, "Succesfully served cachefile {$this->cachefile}"); return true; //如果不成功 } else { //写日志,记录错误信息,级别3 $this->debug(3, "Failed to serve cachefile {$this->cachefile} - Deleting it from cache."); //删除此无效缓存,以便下次请求能重新创建 @unlink($this->cachefile); //同样返回真,因为在serverCacheFile已经记录了错误信息 return true; } } }

所以初步判断可能是缓存出了问题。搜了不少的解决方案啥的都没有有效解决,最终解决的办法竟然是

删掉同路径下的Cache文件夹即可。

 

admin
版权声明:本站原创文章,由admin2020-12-12发表,共计1884字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)