我正在基于本地 Composer 安装 TYPO3 v12.4(我无法更新到 v13),并安装了扩展 'plan2net/webp' 将我的所有图像转换为
.webp
格式。但由于某种原因,扩展程序根本不转换任何图像。
这是我尝试使扩展工作的方法:
将 webp 添加到普遍允许的文件格式中:
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] .= ',webp';
通过
安装扩展ddev composer require "plan2net/webp"
检查后端模块,扩展已安装且稳定。
按照扩展手册,我刷新了TYPO3和PHP缓存,并清除了维护模块中已处理的文件。还更新了数据库结构**。此时**我希望扩展程序生成每个图像的副本并将其保存为
webp
。但是,如果我检查已处理文件夹中的文件,情况并非如此。
然后我将其添加到我的 .htaccess 文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(png|gif|jpe?g)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteRule ^ %{REQUEST_FILENAME}\.webp [L,T=image/webp]
</IfModule>
是的,mod_rewrite.c 已启用。
在 htaccess 文件的底部我添加了:
<IfModule mod_headers.c>
<FilesMatch "\.(png|gif|jpe?g)$">
Header append Vary Accept
</FilesMatch>
</IfModule>
最后一步是刷新 TYPO3 和 PHP Cache,并再次清除已处理的文件。
我错过了什么?
@LoreenT。如果您查看您的资产和已处理的文件夹,是否存在真正存在的图像的 .webp 副本?然后处理就开始工作了。 然而最重要的是:看起来你正在使用 ddev,它通常是 nginx 而不是 apache。因此,如果是 nginx,您的 htaccess 规则将在 ddev 中被忽略。但你可能只是更新你的 ddev,最新版本已经在其 nginx 配置中包含了正确的 .webp 路由。
您的系统是否符合 webp 的要求?
您可以使用您安装的 Imagemagick 或 GraphicsMagick 如果支持 webp,则已用于 TYPO3 图像处理(请参阅 如下)或者您可以使用您的设备上可用的任何其他外部二进制文件 服务器(例如 cwebp)。
您可以测试 GraphicsMagick 的支持,例如:
gm version | grep WebP
(应该返回
)yes
或使用 ImageMagick ,例如:
convert version | grep webp
(应返回支持的格式列表,包括
)webp
您可以通过
webp
查看phpinfo()
的支持情况:
DDEV
对于较旧的 ddev,您必须将
webimage_extra_packages: [webp]
添加到 config.yaml 中。
Imagemagick 和 gd 似乎都在最新版本的 ddev 中包含开箱即用的 webp 支持。