# 升级导致图片损坏

**URL:** <https://meta.discourse.org/t/upgrade-broke-images/153614>\
**Category:** Support\
**Created:** [2020年六月2日 19:50 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614 "2020-06-02T19:50:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kkowalczyk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kkowalczyk/32/105438_2.png) [@kkowalczyk](https://meta.discourse.org/u/kkowalczyk)\
**Post date:** [2020年六月2日 19:50 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614/1 "2020-06-02T19:50:52Z")

</div>

我已通过 /admin 的 Web 界面更新至 2.5.0.beta6，但随后部分图片缺失，因为 S3 返回了 403 错误。

示例页面如下：[https://forum.sumatrapdfreader.org/t/outlook-folders-previewer-change-set-zoom-width/2506/5](https://forum.sumatrapdfreader.org/t/outlook-folders-previewer-change-set-zoom-width/2506/5)

JavaScript 控制台中显示的内容如下：

```plaintext
ec89198b693dd221d603373294f36ea14c5c25f1.png:1 GET https://discourse-sumatra-backup.s3.dualstack.us-east-1.amazonaws.com/original/2X/e/ec89198b693dd221d603373294f36ea14c5c25f1.png 403 (Forbidden)
Image (async)
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
e7cb414e4237ed797a603eeea49d7ed468ac2aee.png:1 GET https://discourse-sumatra-backup.s3.dualstack.us-east-1.amazonaws.com/original/2X/e/e7cb414e4237ed797a603eeea49d7ed468ac2aee.png 403 (Forbidden)
Image (async)
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
(anonymous) @ _application-f4f68c0db9c527ecb2ed2efb83107d37ca9e6e73caaadc4ab4761618775063f1.js:1
5:1 尝试使用以下来自 Manifest 的图标时出错：https://forum.sumatrapdfreader.org/manifest.webmanifest（下载错误或资源不是有效的图片）

```

不幸的是，S3 似乎在返回 403 错误时撒谎了，它针对不存在的文件返回 403（而不是 404），因此更可能的情况是这些图片已不在 S3 中，而非权限被错误配置。

我按照 [Old image uploads become broken images - #31 by qtpngo](https://meta.discourse.org/t/old-image-uploads-become-broken-images/47236/31?u=kkowalczyk) 的建议执行了以下操作：

```plaintext
cd /var/discourse
./launcher enter app
rake uploads:recover_from_tombstone

```

但这并未解决问题。

请问有什么修复建议吗？

---

<div class="post-metadata">

**Author:** ![SweaterVest](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sweatervest/32/182737_2.png) [@SweaterVest](https://meta.discourse.org/u/SweaterVest)\
**Post date:** [2020年六月2日 22:11 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614/2 "2020-06-02T22:11:31Z")

</div>

我遇到了同样的问题——升级到 2.5.0.beta6 后，图片返回 403 禁止访问错误

已启用 S3 上传 = 是

---

<div class="post-metadata">

**Author:** ![kkowalczyk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kkowalczyk/32/105438_2.png) [@kkowalczyk](https://meta.discourse.org/u/kkowalczyk)\
**Post date:** [2020年六月27日 03:36 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614/3 "2020-06-27T03:36:19Z")

</div>

@vinothkannans 有什么建议吗？

回顾一下：我只是通过 Web 界面升级了 Discourse，但似乎许多图片已从 S3 备份中删除。示例页面：[No preview in Windows Explorer](https://forum.sumatrapdfreader.org/t/no-preview-in-windows-explorer/308)

关于如何重新创建或重新上传这些图片，有什么建议吗？

我已尝试但未解决问题的事项：

```plaintext
rake uploads:recover_from_tombstone

```

```plaintext
rake posts:missing_uploads

```

返回：

```plaintext
2 个上传缺失。
6867 篇帖子中有 2 篇受到影响。

```

显然缺失的图片远不止 2 张。

```plaintext
rake uploads:missing

```

目前看来该命令完全无法使用：

```plaintext
default 在 S3 上有上传！
在没有清单的情况下进行验证可能会耗费大量时间。
我们建议您在多站点环境下运行 SKIP_EXTERNAL=1 rake uploads:missing 以跳过验证。
rake aborted!
PG::SyntaxError: 错误：输入末尾存在语法错误
LINE 1: INSERT INTO verified_ids VALUES
                                        ^
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.2/lib/patches/db/pg.rb:56:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.2/lib/patches/db/pg.rb:56:in `exec'
/var/www/discourse/lib/file_store/s3_store.rb:290:in `list_missing'
/var/www/discourse/lib/file_store/s3_store.rb:197:in `list_missing_uploads'
/var/www/discourse/lib/tasks/uploads.rake:396:in `list_missing_uploads'
/var/www/discourse/lib/tasks/uploads.rake:389:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.3.0/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:374:in `block in <main>'
/var/www/discourse/lib/tasks/uploads.rake:400:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
任务：TOP => uploads:missing_files
（通过运行任务并添加 --trace 参数查看完整跟踪信息）

```

---

<div class="post-metadata">

**Author:** ![kkowalczyk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kkowalczyk/32/105438_2.png) [@kkowalczyk](https://meta.discourse.org/u/kkowalczyk)\
**Post date:** [2020年六月27日 03:41 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614/4 "2020-06-27T03:41:51Z")

</div>

此外，我不知道这是否相关，但我有如下内容：

```plaintext
root@discourse-2gb-nyc2-01:/var/discourse/shared/standalone/uploads# ls default/original/1X/
1af3725386cf0eb1cd763f19df548c5f95646710.png b87e5cba637562a00e005839efa6319ba0e8c405.png
29727643e4a789cd3d7daf25fe010290aefedc25.png e652ec24c6af582019d8224ae5b93dcccedd73b4.png
86122817b67f304240c8d690c63c5cf784193061.png f8d4190982be2130c75caa6775726088bbc15496.png
root@discourse-2gb-nyc2-01:/var/discourse/shared/standalone/uploads# ls default/optimized/1X/
86122817b67f304240c8d690c63c5cf784193061_1_120x120.png 86122817b67f304240c8d690c63c5cf784193061_1_60x60.png
86122817b67f304240c8d690c63c5cf784193061_1_135x135.png 86122817b67f304240c8d690c63c5cf784193061_1_64x64.png
86122817b67f304240c8d690c63c5cf784193061_1_180x180.png 86122817b67f304240c8d690c63c5cf784193061_1_67x67.png
86122817b67f304240c8d690c63c5cf784193061_1_20x20.png 86122817b67f304240c8d690c63c5cf784193061_1_75x75.png
86122817b67f304240c8d690c63c5cf784193061_1_240x240.png 86122817b67f304240c8d690c63c5cf784193061_1_90x90.png
86122817b67f304240c8d690c63c5cf784193061_1_25x25.png 86122817b67f304240c8d690c63c5cf784193061_1_96x96.png
86122817b67f304240c8d690c63c5cf784193061_1_30x30.png b87e5cba637562a00e005839efa6319ba0e8c405_1_40x40.png
86122817b67f304240c8d690c63c5cf784193061_1_32x32.png b87e5cba637562a00e005839efa6319ba0e8c405_1_50x50.png
86122817b67f304240c8d690c63c5cf784193061_1_360x360.png b87e5cba637562a00e005839efa6319ba0e8c405_1_90x90.png
86122817b67f304240c8d690c63c5cf784193061_1_37x37.png e652ec24c6af582019d8224ae5b93dcccedd73b4_1_240x240.png
86122817b67f304240c8d690c63c5cf784193061_1_40x40.png e652ec24c6af582019d8224ae5b93dcccedd73b4_1_50x50.png
86122817b67f304240c8d690c63c5cf784193061_1_45x45.png e652ec24c6af582019d8224ae5b93dcccedd73b4_1_64x64.png
86122817b67f304240c8d690c63c5cf784193061_1_48x48.png e652ec24c6af582019d8224ae5b93dcccedd73b4_1_90x90.png
86122817b67f304240c8d690c63c5cf784193061_1_50x50.png

```

因此，[https://discourse-sumatra-backup.s3.amazonaws.com/original/1X/1490d7c52a757954a9aad983f7d0994bb5f5392a.png](https://discourse-sumatra-backup.s3.amazonaws.com/original/1X/1490d7c52a757954a9aad983f7d0994bb5f5392a.png) 对应的图片已不在我的本地文件系统中。

---

<div class="post-metadata">

**Author:** ![masterakay](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/masterakay/32/122593_2.png) [@masterakay](https://meta.discourse.org/u/masterakay)\
**Post date:** [2020年六月27日 08:24 UTC](https://meta.discourse.org/t/upgrade-broke-images/153614/5 "2020-06-27T08:24:21Z")

</div>

同样的问题。我的帖子：

> [@Broken Images and Their S3 URLs](https://meta.discourse.org/t/broken-images-and-their-s3-urls/155889/):
>
> After the recent update to 2.5.0.beta7 all my images on the forum are broken. The avatar is also replaced by default one. These are my suggestions on the dashboard: My Staff Posts for Assets: One such image: /original/2X/4/4064b1cc32199de63ad2fa2b5bd2a0c5b6872c6d.png However, my S3 has no such image: (why did this happen?) My favicon and other logos are missing: /original/1X/b32666bfe0e0eac40aacb178c7430c9f7873b397.png However, my S3 has these files …

@kkowalczyk 这是我们尝试过的，目前还没有任何进展。
