You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:22:39