摄影安放处

This post is not yet available in English. Showing the original version.

March 25, 2025

Table of Contents
Table of Contents

摄影安放处

国内的图片上传网站基本无法保证原图的保存,总会让上传的图片压缩成戴眼镜都看不清的玩意儿。 受不了一次又一次地看见我拍的小鸟与夕阳在上传后化作一团浆糊.. 所以挺想折腾一个属于自己的摄影安放处,记录下一步一步的折腾吐槽吧。

部署

去查看了一下大部分人使用的私人图库,发现 Lychee 的界面很符合我的审美。docker 部署很简单,不过为了永久性的保证,放在了新 vps 里面。(顺便发现原来 Nginx Proxy Manager 居然可以代理非本机 ip 的端口,更喜欢用它了)。 不过发现 Lychee 的代码写的有那么烂啊…又来抱怨几下…

开局

开局 install 的时候直接给我下马威。在 docker-compose 配置好的数据库没给我传上去,直接需要手动创建数据库,绑定账号密码。 在G老师的帮助下简单完成了,顺便改了 APP_URL 直接绑定域名,APP_FORCE_HTTPS 改为 true。结果进去的时候账号密码和域名全部设置都要重新修改,得进 docker 容器里面 nano .env …那开局部署的时候那个界面有啥用呢…

设置

进来第一件事是修改界面语言为 ZH_CN ,很顺利的摸到了 Basic 里面的 language 。结果将 en 修改为 ZH_CN 居然没反应…又询问了G老师,解决方法是在 .env 文件改 APP_LOCALE …不太理解这个诡异 bug 的产生。 后面又发现可以直接在 All Settings 里面找到然后修改,点击后有一个 Save 提醒,然后就正常了… 听说这是一个很久以前就被反馈在 issue 的 bug ,为什么现在还存在呢…

下载

折腾完后终于进入了初始界面,不得不说,界面的设计真的很贴合我的审美。 点击 upload 然后尝试 download… 嗯…这好像也是一个被反馈过的 bug ,而且现在官方也似乎没有修。 那我修修吧。

修复

这是 PHP 8 引入的“类型化属性未初始化”错误。也就是说,$size_variant 这个属性被访问时还没有被初始化,可能是因为 Lychee 运行开发在非 PHP 8 环境吧,一个变量的初始化都没有做... Lychee 是部署在 Docker 容器中的,所以先连上服务器,docker exec 进入容器。 找到了报错文件:app/Http/Requests/Album/ZipRequest.php 里面使用了一个 Trait:

use HasSizeVariantTrait;

trait 里定义了 $size_variant 变量,但是可能在 ZipRequest 中被覆盖或不兼容。 里面指向的变量来源于: app\Http\Requests\Traits\HasSizeVariantTrait.php 那我过去看看… 这里很明显 $size_variant 没定义…

尝试随便定义一个 null:

然后出现了一个新的报错…

/var/www/html/Lychee/app/Http/Controllers/Gallery/AlbumController.php:363

之前 $size_variant 初始化为 null,虽然绕过了属性未定义的问题,但这个变量最终被用作一个枚举类的参数 DownloadVariantType,结果类型不匹配,就炸了。 那就重新定义一下,确保传进去的 $size_variant 是枚举类型 DownloadVariantType,不是 null。

改完后重新 docker restart 一下,再次刷新,终于修复成功。

折腾完后感觉 Lychee 代码写的实在是…或许该去 Github 仓库里提一个 issue ,让开发者多做一做版本适配吧?(还是说我可能下载并且使用的是旧版本?也说不准😑)

上传

我又来了,已经成功地把 lychee 图床换成了 lskyPro,作为相册展示的 lychee 就好好执行展览馆的职责。🙃 本文由原来的怒火中烧地使用Lychee更新为冷静理性地吐槽Lychee但本质没变:Lychee 还是不太行。 image.png

这个从链接导入很诱人,是吧? 😾它是个大摆设!!! lychee 为什么不设置一下后端解析 URL ? image.png (打开日志眼前一黑) 改了DNS,然后… image.png 这告诉我们,有数据库的容器不能乱改DNS。 重新去docker-compose.yml配置了一下DNS,恢复正常。 image.png

但是依然没反应?百思不得其解,容器里curl的通,为什么lychee去get直接完蛋?然后查看一下 Cloudflare…行吧。

image.png

放开了后重启docker,嗯,lychee的导入连接功能恢复正常。皆大欢喜。(此处省略一次服务器的又一次崩溃…)


测试

试一下它的图床功能。 更新lychee不小心把过去的图给删了…还好图还在手机上,我试试新图床吧

不得不说,HNU的校园环境还是很不错的…

突然感觉对NAS有了需求,不过在此之前我还是多多折腾自己吧。

我很喜欢水中的倒影与夕阳。