最新版Chevereto-Free1.6.x常见问题集锦

love2wind

 2022-07-26  /   📝技巧教程  /   302 人浏览  /   0 条评论  /   全文共2226字

前言

昨天那篇文中我说了在Chevereto图床上传图片的时候出现了一个很奇怪的问题,webp文件无法上传,提示系统性错误,错误报告显示:Animated WebP is not supported,意思是不支持动态webp文件。

这是个啥意思,我这上传的也不是动态webp啊?难道是Chevereto出错了?不应该啊,我这个图床也稳定运行了快两年了,前段时间还上传过webp图片的。大致检查了一遍并没有发现是哪里的问题,因为我的Chevereto还是原作者停止维护的最后一个版本 V1.4.2 ,看着后台提示升级的红色图标,想了想还是升个级吧,反正也是闲着,这一升级可是费了老劲了,下面把这个坑爹的过程出现的问题以及处理方法的记录一下,至于上面这个问题的解决方法,容我卖个关子,答案放在最后😔。

国内无法在线升级

进入仪表盘,点击检查更新按钮,在弹出的提示框中点击现在升级,等了一会儿以后发现提示下载错误?什么鬼?以前升级都是很快就完成了,今天就这么背吗?转念一想,以前是国外主机,这个是国内主机,多半是因为这个 问题,这就好解决了。

解决办法

检查国内主机无法在线升级的原因是Github在国内无法访问,你只要能解决这个问题就可以了。具体方法请自行搜索,例如 :修改Hosts访问github,这里给大家说一种更简单的办法。

打开 /app/install/update/updater.php 并查找

https://github.com

替换为

https://mirror.ghproxy.com/https://github.com

这样就能国内主机就能直接后台在线升级了。或者直接下载Chevereto-free 1.6.2.zip后,上传覆盖旧版文件即可。

Github下载(已加速)🐙 网盘下载 🚀

新版Chevereto-Free没有中文了?

经过刚才的处理以后,再升级,很快就升级成功了,重新进入仪表盘,😳怎么成了英文了?个人设置和后台设置中都没有语言设置项了?Chevereto从初版开始就内置中文语言包,怎么这一更新还不支持中文了?这用起来就费劲了啊,绝对不能忍,找找万能的网友吧,一搜索才知道,原作者停止维护Free版本以后由另外一个人接手进行维护了,然而这个人据说是个棒子,所以1.5.1版开始就已经阉割语言设置功能,真TM的棒子,脑回路就是和正常人不一样😤。幸好有大佬解决了这个问题,下面就贴一下设置方法。

解决办法

1、修改class.gettext.php

打开文件:lib/G/classes/class.gettext.php

更新:最新版本chevereto已经不带这个文件了,您可以在网上下载个旧版chevereto从中提取该文件。如果您是由旧版升级来的,则不用下载。

搜索:private function cache(),在其下面第二行加上return false;

说明:这个函数是写语言缓存的,它会强行更改语言缓存文件。这里改成让它直接返回,不要写缓存。

更改后的代码如下:

        return false;
        if (!@is_dir(dirname($this->cache_file))) {
            throw new GettextException("Target cache dir doesn't exists", 400);
        }

2、修改l10n.php

打开文件:app/lib/l10n.php
搜索:

if ($msg && !is_null($args)) {

在这行上面增加一行

$msg = CHV\L10n::gettext($msg);

更改后的代码如下:

function _s($msg, $args=null)
{
    $msg = CHV\L10n::gettext($msg);
    if ($msg && !is_null($args)) {
        $fn = is_array($args) ? 'strtr' : 'sprintf';
        $msg = $fn($msg, $args);
    }
    return $msg;
}
说明:这是用于调用翻译函数。

3、修改loader.php

打开文件:app/loader.php
搜索:

define('CHV_APP_PATH_CONTENT_SYSTEM', CHV_APP_PATH_CONTENT . 'system/');

在这行下面增加:

define('CHV_APP_PATH_CONTENT_LANGUAGES', CHV_APP_PATH_CONTENT . 'languages/');
说明:这是定义了一个语言文件路径,最新版本给去掉了,我们要加回来

4、上传中文语言文件

下载中文语言文件,解压后,把该语言文件上传到网站的 app/content/languages/overrides/app/content/languages/overrides/app/content/languages/cache/overrides/ 三个文件夹内。第二个文件夹可能原来没有,需要手动新建。(可以在网上下载个旧版chevereto从中提取该文件。如果您是由旧版升级来的,则不用下载。)

修改数据库

  • 如果你网站原来就是设置的显示中文语言,该步骤可忽略。
  • 如果原来是其他语言,或者你说新安装的,需要进数据库,把数据表chv_settings,把里面的default_language的setting-value值改为zh-CN

后续问题

这样修改后,我的Chevereto-Free升级到 1.6.2 版本后 就支持中文了,但是,我看有网友说他们修改后出现错误,本着折腾的精神,我就又重新安装了一个1.6.2版本的测试了一下,果然修改后,打开网站直接白板了,估计是缓存问题,几经折腾,最终还是没能解决问题,各位大佬如果知道是哪里的错误,请留言指导一下。

文件下载

修改文件下载 🚀 语言包下载 🚀 Chevereto-Free 1.6.2 DEMO

安装1.6.2版本出现404错误

结果按照原来的方法安装,直接404了,猜测是伪静态的问题,上网搜索了一下,同样问题的人还不少,这里也贴一下安装方法。

新版环境要求

现在Chevereto最新版的最低环境要求已经提高到 PHP7.4MYSQL5.7。而且已经支持ImageMagick,

PHP扩展

你可能还需要安装以下PHP函数:

  • curl
  • exif
  • fileinfo
  • hash
  • imagick
  • gd
  • json
  • mbstring
  • pdo
  • pdo-mysql
  • session
  • xml
  • zip

设置文件夹权限

appcontentimages 三个文件夹,app/setting.php 文件设置权限为 777,经测试权限 775会出错。

伪静态

经我测试,1.6.2用以前的伪静态规则会显示404,所以要用新的,下面两个Nginx伪静态设置都是可以的。

location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } try_files $uri $uri/ /api.php; } location /admin { try_files $uri /admin/index.php?$args; }
    # Disable access to sensitive application files
    location ~* (app|content|lib)/.*\.(po|php|lock|sql)$ {
        return 404;
    }
    location ~* composer\.json|composer\.lock|.gitignore$ {
        return 404;
    }
    location ~* /\.ht {
        return 404;
    }
# Image not found replacement
location ~* (jpe?g|png|gif|webp) {
log_not_found off;
error_page 404 /content/images/system/default/404.gif;
}

# CORS header (avoids font rendering issues)
location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
add_header Access-Control-Allow-Origin "*";
}

# Pretty URLs
location / {
try_files $uri $uri/ /index.php?$query_string;
}

需要注意的就是这几处,然后访问网站域名,根据提示填入数据库信息后安装就可以了。具体安装过程可以看我以前的文章。

宝塔面板安装Chevereto图床程序及其常见问题

[scode type="tip-success"]2022年7月27日更新:最新版Chevereto-Free常见问题集锦 - 国内主机在线升级的方法 - 升级1.....

宝塔环境下支持WeBP格式的设置

Chevereto-Free从1.3.0版就开始支持WEBP了,宝塔面板PHP7.4默认GD库是支持WEBP的。

1、查看GD库是否支持webp格式

宝塔面板打开PHP7.4设置 - 选择phpinfo - 查看phpinfo - 找到GD库参数 - 查看 WebP Support 是否为 enabled ,看下图(图中标记错了,不碍事,能看懂就行),只要是 enabled 就说明支持。如果查看GD库不支持WEBP,可以用下列命令重新编译安装PHP7.4。

编译安装PHP7.4

wget -O php.sh http://download.bt.cn/tools/php.sh
bash php.sh install 7.4

2、网站nginx放行webp

然后打开网站设置,分别在Nginx配置文件和伪静态中添加webp,见下图,在这个两个位置加入 webp ,然后保存。

3、Chevereto后台启用webp

最后登录Chevereto,进入仪表盘 - 设置 - 图片上传 - 勾选WEBP - 保存,此时就可以上传webp图片了。

如果还是上传出现错误,在webp转码软件里面取消勾选 保留元数据 就可以正常上传了。

安装imagick驱动Chevereto支持WEBP格式

新版的Chevereto-Free已经支持ImageMagick扩展,或许你想使用ImageMagick驱动Chevereto,但宝塔PHP7.4默认安装的ImageMagick却不支持WEBP格式,Chevereto对PHP8的兼容又不太好。以下介绍宝塔PHP7.4编译安装ImageMagick及设置的方法。

1、编译安装PHP7.4及imagick

wget -O php.sh http://download.bt.cn/tools/php.sh
bash php.sh install 7.4

然后再去安装 imagick扩展。

2、安装最新imagick包

  • 下载安装包

https://pecl.php.net/package/imagick 下载安装包,本文所用为当前最新版的3.5.1,从3.4.4后的版本都支持WEBP。

wget https://pecl.php.net/get/imagick-3.5.1.tgz
  • 解压安装包
tar -xzvf imagick-3.5.1.tgz
  • 编译安装
cd imagick-3.5.1
/www/server/php/74/bin/phpize
./configure --with-modules --with-webp --with-php-config=/www/server/php/74/bin/php-config
make && make install
  • 配置PHP及ImageMagick

编辑PHP7.4的配置文件,在末尾加上以下内容(no-debug-non-zts-20190902文件夹名称需以你服务器的具体文件夹名为准,请自行修改,勿照抄):

[imagick]
extension = /www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/imagick.so

重启php应该就可以安装了

可选编辑/etc/ImageMagick-6/policy.xml文件,根据服务器具体情况修改以下几项的值,memory,map,area将限制ImageMagick所使用的内存缓存,width,height限制ImageMagick所处理的图片大小。

<policy domain="resource" name="memory" value="1024MiB"/>
<policy domain="resource" name="map" value="2048MiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>
<policy domain="resource" name="area" value="2048MB"/>
<policy domain="resource" name="disk" value="2GiB"/>

修改app/settings.php文件

$settings['image_library'] = 'imagick';

跨域错误警告

今天发现本站在博文中Chevereto图床的图片提示跨域错误的警告,见下图,折腾了半天还是没能解决问题,最后在一篇博文中发现说Chrome不会有这个问题,但是Egde和Firefox就会出现上述问题,经我测试确实如此,所以应该是浏览器的问题,如果介意这个情况,可以换Chrome。

Access to XMLHttpRequest at 'https://imgbed.top/images/2021/06/18/fca81fb7598573d4ff81e891426a71a5.jpg' from origin 'https://nie.su' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

webp上传错误

上面这些基本就是我因为Chevereto上传Webp图片提示错误,然后折腾的整个过程,但是经过上面的操作,再上传Webp图片竟然还是提示错误,就在我无计可施的时候,突然灵机一动,会不会不是Chevereto的问题,而是Webp图片有问题,会这样想还是因为上面提到的一句话:

如果还是上传出现错误,在webp转码软件里面取消勾选 保留元数据 就可以正常上传了。

平时我转换Webp图片都是用一个在线服务,无需上传文件的多功能图片批量处理程序v3.0,这里要说一下,这个服务还是非常不错的,大家都可以试试,多文件处理速度很快,会不会是转换文件的时候有点问题导致的上传错误,于是我就换另外一个在线服务,Squoosh,这一次上传成功了,所以应该就是在转换文件格式的时候有问题,我会向提供服务的这位大佬反馈这个问题,看下个版本能不能解决。

参考文章

 赞  赏

如果觉得我的文章对你有用,请随意打赏

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开   或者 扫一扫,即可进行扫码赞赏哦

原创文章,版权属于:涅槃博客 - love2wind
本文最后更新于2022年07月29日16时48分04秒,已超过60天没有更新,若内容或图片失效,请留言反馈
本文链接:https://nie.su/archives/2221.html(转载时请注明本文出处及文章链接)
作品采用:《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权

发表评论

涅槃博客

涅槃博客

Love2wind's blog