群晖 NAS Docker中荔枝相册Lychee 如何修改上传文件大小的限制

xc
xc
2022-09-07 / 14 评论 / 2,396 阅读 / 正在检测是否收录...

概述:

 家里的群晖Synology NAS Docker中,安装了荔枝相册Lychee ,默认上传文件大小是100M,图片当然是足够了,但上传视频的时候,老是提示post_max_size 受限,上传失败。
 按理来说,这个问题并不复杂,修改对应的PHP.INI文件,就可以了,1分钟的事情,可是我却整整用掉了一个晚上研究,崩溃。

为什么会这样?

 原因就是Docker中的应用,调用的是它独立的web环境,并且docker中的文件目录,只能通过SSH命令看到,SFTP是看不到的,而且就算你能看到,也找不到对应的目录,它的存放目录是它自己一长串代码生成的目录,真是痛苦。

折腾起来吧

 我有去lychee的官网看过介绍,但官网写的太粗劣,也使我走了不少的弯路:
lychee01.jpg
 官网让更改的是/etc/nginx/nginx.conf,但是群晖系统,这个文件是修改不了的,每次设备重启,文件就会被复原。网上的方案,大多都是添加达到引用的.conf中,差点导致我系统启动不起来,放弃。
 当然,我也试过放弃DOcker环境,重新把lychee配置在虚拟机中,一切都是那样的顺利,结果发现照片没问题,视频还是存在报错,主要原因是,虚拟机无法引用群晖系统中的两个插件:FFmpeg 和Exiftool
lychee02.jpg
 我查看了我的PHP插件,里面是有Exiftool的,但不知道为啥,就是报错。放弃
 我觉得在群晖套件中选择套件安装或直接拉源码。SSH到群晖APPSTOR中,这个方案是可行的,至少可以调用系统的环境和插件,但没去研究。
 跑题了,我们要解决的问题是:如何解决Docker中Lychee 上传文件大小的限制?中间的弯路,就不做过多描述了,网上其实是有解决方案的,但各路大神,写的步骤比较简略,对小白很不友好,尤其是我这种对SSH命令完全零基础的人,真是每一步都走的那么艰难。

直接进入正题

 其实,就是想办法找到docker中,程序调用的PHP.INI的信息,然后修改它。我的SSH是直接利用root用户登录的,你如果是普通用户登录,请记得获得管理员权限。
以下代码中//为注释

docker ps -a 
//查看所有的容器
docker exec -it fd2152ed874c /bin/bash
//找到对应的容器ID,并填写,我的是fd2152ed874c
whereis php
//查找PHP信息
/usr/bin/php --ini
//按照自己的路径查找ini文件,这一切的操作,其实就是为了找出:loaded configuration file对应的php.ini地址

lychee03.jpg

 剩下的,就是根据这个路径找到

/volume1/@docker/btrfs/subvolumes/6a7c8241e27eb7888e09c63dcfabf71d992da023face7cea90b624ea46b29129/etc/php/8.1/cli/php.ini

lychee04.jpg

 请各自根据自己的系统信息,对应修改,不要盲目的只会复制和粘贴,找到文件位置就好办了,我不习惯用vim修改,直接登录SFTP找到文件,修改,搞定!

补充,或者在你新建的uplouds.ini,增加你关心的几个参数,以下内容,也是可行的,不过我并没验证过,只是网上的解决方案。

upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 600

2023.08.01 更新

今天重装了Lychee 4.9.4 按照我上面的方法修改完后,发现没成功。
Na ni ? ?
又翻开了 Lychee的官网 说明:

Lychee的官网说明

其实在官网已经说的很清楚的了,我只是看英文的时候烦躁,没有仔细阅读,这里大概简述一下:
nginx 默认配置是限制在100MB的,如果你需要修改这个大小,有两个方案,
1.修改PHP配置文件。(就是我上面描述的那些,但有个问题,那就是PHP加载ini文件,挂来挂去,我都不清楚它到底加载的是哪个php.ini。因为有多个,网上都说是loaded configuration file对应的php.ini地址,但我发现,并非全部是这样)
2.Lychee官网更推荐修改nginx ,查找fastcgi_param PHP_VALUE,然后添加或修改:

fastcgi_param PHP_VALUE "post_max_size=100M
                max_execution_time=3600
                upload_max_filesize=100M
                memory_limit=256M";

查找client_max_body_size的值,也需要做修改。(我刚开始没注意到这个参数,导致上传会卡着不动,这个也是限制文件大小的)
修改完保存就可以了。

重点:nginx 默认配置在哪里?这里是要修改DOCKER中的nginx配置,修改群晖系统得可没用。
参考上面找PHP.ini的步骤,按照自己的路径修改,下面这是我的,供参考。

/volume1/@docker/btrfs/subvolumes/6a7c8241e27eb7888e09c63dcfabf71d992da023face7cea90b624ea46b29129/etc/nginx/nginx.conf

最后,想说nginx.conf和php.ini到底是二选一就可以,还是两个都要同步修改才行,我没验证,反正我全部作了修改,以提高成功率。

最后,记得重启nginx和PHP服务,我不会用命令,直接重启服务器,简单粗暴,但效率低。
GOOD LUCK!

补充:

网上看到了,没进一步验证,留作记录。
nginx 重启命令

#等同于stop然后start,启动的时候会造成短暂的服务中断;如果配置文件语法错误,那问题就大了。
synow3tool --gen-all 
#或者
systemctl reload nginx

#一般用这个:Nginx 服务不会终止,使用主进程检查配置,如果配置文件语法正确,则主进程会启动一个新的工作进程处理新来的请求。 简单来说,不影响当前的运行工作。
nginx -s reload
4

评论 (14)

取消
  1. 头像
    得分 匆匆过客
    中国福建省宁德市联通 · Windows 10.0 Edge 113.0.1774.42

    为了看内容

    回复
  2. 头像
    xiaoyuyu Level:1
    中国上海市闵行区电信 · Windows 10.0 Chrome 119.0.0.0

    看一看内容

    回复
  3. 头像
    thisw 匆匆过客
    加拿大 · Windows 10.0 Edge 119.0.0.0

    看一看回复怎么回事

    回复
  4. 头像
    ok 匆匆过客
    中国重庆市联通 · Windows 10.0 Edge 117.0.2045.41

    回复之后能看到结果 吗?

    回复
  5. 头像
    小御御 Level:1
    中国安徽省移动 · Mac OS 10.15.7 Chrome 117.0.0.0

    厉害了,正好需要

    回复
  6. 头像
    cbmway 匆匆过客
    中国黑龙江省哈尔滨市电信 · Windows 7 Chrome 108.0.5359.125

    我正需要,想看看到底如何做到的

    回复
使用 Typecho 建站,并搭配 joe 主题(有修改)
蜀ICP备2022005623号-2 川公网安备 51012202001212号
本站已运行 00000000
Copyright © 1970 ~ Xcshare All rights reserved.