Apache在Ubuntu下输出SVG为Base64而非原SVG的问题求助
解决Ubuntu Apache输出SVG被转为Base64的问题
排查方向及解决方案
检查并禁用mod_deflate对SVG的压缩
Ubuntu环境的Apache默认可能开启了mod_deflate模块,导致SVG内容被自动编码为Base64格式。可以在Apache全局配置文件(如/etc/apache2/apache2.conf)或站点专属配置文件中添加规则,跳过SVG的压缩处理:SetEnvIfNoCase Request_URI \.svg$ no-gzip dont-vary添加后重启Apache生效:
sudo systemctl restart apache2验证PHP生成的SVG原始内容
先确认第三方库produce_svg()输出的是原始SVG代码而非Base64字符串,可在PHP代码中临时添加调试逻辑:$svg = produce_svg(); // 打印内容开头部分,确认是否为<svg>标签开头 echo substr($svg, 0, 60); exit;如果输出是原始SVG标签,说明问题出在Apache配置;若已经是Base64编码字符串,需排查第三方库的生成参数。
禁用可能存在的mod_base64模块
部分特殊环境可能安装了mod_base64模块,导致自动转码。可通过以下命令检查并禁用:sudo a2dismod base64 sudo systemctl restart apache2重置PHP输出缓冲
确保PHP输出缓冲没有额外编码操作,在输出SVG前清空并关闭缓冲:ob_end_clean(); header('Content-Type: image/svg+xml'); echo produce_svg(); exit;
内容的提问来源于stack exchange,提问作者rmirabelle
相关产品推荐
相关产品推荐

