前言昨天那篇文中我说了在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后，上传覆盖旧版文件即可。[btn href="https://mirror.ghproxy.com/https://github.com/rodber/chevereto-free/releases/download/1.6.2/1.6.2.zip" type="#138496"]Github下载（已加速）🐙[/btn] [btn href="https://www.123pan.com/s/sKeA-nZ5mA" type="#409eff"]网盘下载 🚀[/btn]新版Chevereto-Free没有中文了？经过刚才的处理以后，再升级，很快就升级成功了，重新进入仪表盘，😳怎么成了英文了？个人设置和后台设置中都没有语言设置项了？Chevereto从初版开始就内置中文语言包，怎么这一更新还不支持中文了？这用起来就费劲了啊，绝对不能忍，找找万能的网友吧，一搜索才知道，原作者停止维护Free版本以后由另外一个人接手进行维护了，然而这个人据说是个棒子，所以1.5.1版开始就已经阉割语言设置功能，真TM的棒子，脑回路就是和正常人不一样😤。幸好有大佬解决了这个问题，下面就贴一下设置方法。解决办法[scode type="success"]已经有大佬现成的1.6.2中文完美版，直接上传覆盖除 images content app/settings.php以外的其他文件。[/scode]var needGithubWidget=1;.github-box {max-width: 100%;margin: 0 10px;} .github-box .github-box-download .download {top: 8px;} .github-box a {margin-top: -1px;margin-left: 2px;margin-right: 2px;} .github-box .github-box-title h3 {background: url([binary]) 5px center no-repeat;}[cards css="danger" type="以下方法并不通用，有人成功有人失败，不推荐"]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版本的测试了一下，果然修改后，打开网站直接白板了，估计是缓存问题，几经折腾，最终还是没能解决问题，各位大佬如果知道是哪里的错误，请留言指导一下。[/cards]文件下载[btn href="https://www.123pan.com/s/sKeA-Qc5mA" type="#409eff"]修改文件下载 🚀[/btn] [btn href="https://www.123pan.com/s/sKeA-Ec5mA" type="#28a745"]语言包下载 🚀[/btn] [btn href="https://ts.avps.eu.org" type="#ffc107"]Chevereto-Free 1.6.2 DEMO[/btn]安装1.6.2版本出现404错误结果按照原来的方法安装，直接404了，猜测是伪静态的问题，上网搜索了一下，同样问题的人还不少，这里也贴一下安装方法。新版环境要求现在Chevereto最新版的最低环境要求已经提高到 PHP7.4，MYSQL5.7。而且已经支持ImageMagick，PHP扩展你可能还需要安装以下PHP函数：curlexiffileinfohashimagickgdjsonmbstringpdopdo-mysqlsessionxmlzip设置文件夹权限app 、content 和 images 三个文件夹，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; }需要注意的就是这几处，然后访问网站域名，根据提示填入数据库信息后安装就可以了。具体安装过程可以看我以前的文章。[post]2196[/post]宝塔环境下支持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.4wget -O php.sh http://download.bt.cn/tools/php.sh bash php.sh install 7.42、网站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及imagickwget -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://cdn2.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，这一次上传成功了，所以应该就是在转换文件格式的时候有问题，我会向提供服务的这位大佬反馈这个问题，看下个版本能不能解决。参考文章https://www.mtao.cn/post/25.htmlhttps://xiaodongxier.com/1201.htmlhttps://yremp.live/chevereto/https://www.4dmayi.com/3093.htmlhttps://www.xiyig.com/?p=542
首先来复习下关于404页面的知识所谓404是指：服务器找不到指定的资源，请求的网页不存在(譬如浏览器请求的网页被删除或者移位，但不排除日后该链接有效的可能性)。在http规则中用404来表示某个页面不能访问，一般来说，网站的404错误页面都是IIS或APACHE默认的页面，千篇一律，非常单调。由于可以自己订制，于是后来就衍生出了许多个性化的奇趣版的404错误页面。下面再来说下最近世界上很著名的一个404错误页面女孩，所以她叫“famous 404 girl”！呵呵。。。看下面就是今天的主角，什么？你看不懂什么意思？那我无语了，去面壁思过吧！访问以下地址查看本站的404页面我就是404哦