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

FreeBSD13.0下Redmine4.2.3导出甘特图PNG提示缺少ImageMagick报错排查

Redmine甘特图导出PNG报错排查方案

可能的故障点及排查方法

1. Redmine运行进程的环境变量与手动执行环境不一致

你手动切换到www用户能正常执行convert命令,不代表Redmine运行的进程能拿到正确的PATH:

  • 进入Redmine生产环境控制台:执行RAILS_ENV=production rails c,执行puts ENV['PATH']和puts which convert``,对比输出结果与你手动登录www用户执行的结果是否一致
  • 检查FreeBSD下Apache的envvars配置,确认/usr/local/bin已经加入Apache运行时的PATH变量中

2. MiniMagick配置未生效

即使你在configuration.yml中配置了convert路径,也可能因为配置格式问题或者缓存未加载:

  • 在Redmine生产环境控制台依次执行以下命令验证配置:
    • MiniMagick.cli_path:确认输出为你配置的/usr/local/bin/convert
    • MiniMagick.version:如果正常返回ImageMagick版本号说明探测正常,如果报错说明配置未生效
  • 检查configuration.yml的imagemagick_convert_command配置行,删除该行重新手敲,避免复制粘贴带来的半角/全角空格、隐藏字符问题

3. 临时目录权限异常

MiniMagick处理图片时需要读写系统临时目录,权限不足会被误判为组件缺失:

  • 对比两台服务器的/tmp目录权限,正常应为1777
  • 切换到www用户执行touch /tmp/test_img && rm /tmp/test_img,确认临时目录读写权限正常
  • 检查Redmine进程的TMPDIR环境变量,确认没有指向无权限的自定义临时目录

4. ImageMagick策略文件限制

ImageMagick7默认的policy.xml可能会限制PNG格式的读写权限:

  • 对比两台服务器的/usr/local/etc/ImageMagick-7/policy.xml文件内容,确认不存在PNG相关的限制规则
  • 如果存在<policy domain="coder" rights="none" pattern="PNG" />配置,将rights改为read|write或者直接删除该行

5. 缓存或进程残留问题

更新配置、安装包后没有彻底重启进程会导致旧逻辑依然运行:

  • 停止Apache服务,执行ps aux | grep ruby杀掉所有残留的Redmine相关进程,再重新启动Apache
  • 清理Redmine缓存和插件资产:
    RAILS_ENV=production rake tmp:cache:clear
    RAILS_ENV=production rake redmine:plugins:assets
    

内容的提问来源于stack exchange,提问作者Jan Catrysse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:04