我只会瞎折腾!暨兰空图床上传图片失败解决方法!

Auth:老张       Date:2026/04/28       Cat:电脑网络       Word:共1612字

◷2026/04/28   👁浏览:0   暂无评论
文章目录 「隐藏」
  1. 瞎折腾之一:重置消息队列
  2. 瞎折腾之二:降级数据库
  3. 瞎折腾之三:删站重建
  4. 瞎折腾之四:网站搬家
  5. 最终折腾:回到起点!
  6. 总结:

我只会瞎折腾!暨兰空图床上传图片失败解决方法! - 第1张图片 我给自己定义“瞎折腾”应该很多次了!每次折腾完一件事之后,才会把整个折腾的过程撸一撸思路,这才会发现绕了太多太多的弯路而浪费了太多太多的时间。讲一讲这次我又是怎么样瞎折腾兰空图床上传失败的吧!

应该是大前天,我写老张随笔里需要上传一张图片到图床,传了N次都不行,要知道之前上传都是正常的,换了其他的存储方式也上传不了!好了,下面就是我的“骚操作”,开始了我的“瞎折腾”之路了!

瞎折腾之一:重置消息队列

兰空图床我是普通方式安装,在生成缩略图、图片处理以及发送邮件等等功能中,这些耗时任务都需要使用消息队列来执行,我们可以使用 php artisan queue:work 命令来运行消息队列。这块我是删了加、加了删,折腾了N次。

结果是可想而知的!图片上传还是失败!

瞎折腾之二:降级数据库

为了能跟上“潮流”,我在3月20号的时候,把数据库mysql从5.7版本升到了8.0的,升级之后所有网站运行正常。期间在4月10号的时候还正常的上传过图片到图床。但是,自己的脑子还是跑气,还是把数据库给降级了。这次降级没有直接整体降级,而是给兰空图床单独配置了一个docker部署的Mysql5.7版。这次折腾docker部署的Mysql5.7版也是搞了半天的时间,Docker版的mysql部署好后,导入数据又是个问题了,又安装Navicat,远程到Docker版的mysql数据库,才把数据给恢复了!

结果是可想而知的!图片上传还是失败!

瞎折腾之三:删站重建

脑子跑气上头了!折腾起来不经大脑了!把数据库备份下,把网站、数据库重部删掉,下载网站源文件,从0开始安装,在用全新数据库的情况下再次测试图片上传,结果,结果,还是失败!把数据库恢复后再次测试,结果,结果还是失败。

瞎折腾之四:网站搬家

人如果脑子一根筋了,谁劝也没有用,何况还没有人劝呢!在我的甲骨文破西上也是从0开始安装了兰空图床,上传图片成功!把数据库恢复,上传图片成功!

最终折腾:回到起点!

虽然把网站搬到甲骨文后上传图片正常了,但是甲骨文破西只是本时瞎折腾东西用的,放网站速度还是慢的。那只能再回来起点!

这次折腾,真的是静下心来了,想着,之前上传图片是正常的,而某个时间上传不成功,而网站环境、配置什么的又都没有修改过,那问题出在哪里了?请出我的“小张”,把网站日志交给小张分析,再把网站目录下的/storage/logs日志进行了分析,最终导致图片上传失败的原因找到了,想都不敢想!是服务器时间与标准时间不一致导致的上传失败!

日志分析得很清楚了,核心问题就是 服务器时间不对: 错误:RequestTimeTooSkewed

RequestTime: 20260421T084333Z (请求发起时间: 08:43:33 UTC) ServerTime: 2026-04-21T08:26:19Z (服务器认为的时间: 08:26:19 UTC) MaxAllowedSkew: 900000ms (15分钟)

两者相差约 17分钟,超过了 AWS S3 允许的 15 分钟偏差,所以 S3 拒绝了上传,返回 403 Forbidden。

解决方法:同步服务器时间 bash 查看当前服务器时间 date -u

同步 NTP 时间 timedatectl set-ntp true

或者手动安装 ntpdate 同步 ntpdate -b pool.ntp.org

同步完之后再上传就好了。

这个坑确实比较隐蔽——应用日志会报 403 Forbidden,但真正原因藏在 AWS 返回的 XML 错误信息里,提示 RequestTimeTooSkewed,指向时间偏差问题。

想不到是服务器时间与标准时间不一致,超过了S3的允许范围15分钟而导致拒绝上传!

总结:

唉,瞎折腾!瞎折腾!自己一直在瞎折腾!遇到问题不先理清思路,上去就是一通瞎折腾!结果是浪费了精力浪费了时间!就这件事而言,如果事前可以静下来,理理思路,根本就不会浪费这么多时间和精力!唉!以后遇事,还是得要先“想静静”吧!

 

 

 

《我只会瞎折腾!暨兰空图床上传图片失败解决方法!》留言数:0

发表留言