Typecho读取上传的文件显示403

之前个性化typecho博客的时候出现如下问题: 从本地把文件拖进typecho的文件持久化目录之后,文件无法访问,用url访问或者typecho自定义php页面调用(例如src: url('<?php $this->options->siteUrl(); ?>usr/uploads/SarasaGothicK-Regular.ttf')})都报403错。一开始以为是我上传的这个字体要写入权限,但运行了chmod也没用。摸索了很久终于发现问题,如果不是通过typecho后台上传渠道上传(例如从本地拖文件),会导致文件的所有者为ssh或docker宿主管理员的身份。而typecho容器内使用的所有者为www-data,从而导致没权限访问。所以最直接暴力的解决方案就是在typecho docker内(docker exec或通过docker管理页面进入其终端机)执行

chown www-data:www-data 上传的文件在容器内的路径
chown -R www-data:www-data 上传的文件所在文件夹在容器内的路径

不过这样每次上传之后都要执行一遍,你可以写一个hook自动触发。不过最好最简单的解决方法还是从typecho后台进入上传,这样文件的所有者会自动变成www-data

插件导入后只显示“即插即用”或点击设置报错

如果在插件列表只有一行新纪录,插件的名字描述都没有,只显示“即插即用”。一般是插件文件夹在本地持久化后权限的设置问题。解决方法为:进入容器内应用后执行:

chmod -R 777 /var/usr/plugins

如果是插件名字和描述等正常显示,但是一点击设置就报错。或者描述显示插件不安全,建议移除云云。一般是插件的文件夹和插件名不匹配导致的。可能是由于你从github下载的文件夹名后面跟了master/main等分支名。解决方法为:找到在本地持久化的插件文件夹,把对应的插件文件夹名 改成 后台插件管理界面显示的插件名。

标签:无

你的评论