【问题标题】:imagemagick - mini_magick tmp files error Ruby on Railsimagemagick - mini_magick tmp 文件错误 Ruby on Rails
【发布时间】:2013-06-28 04:06:29
【问题描述】:

新手 Rails 编码器在这里....花了太多时间试图弄清楚这个有什么想法?

以下脚本在我的开发机器上运行,但在生产中失败。此脚本失败后 - 当我检查 /tmp 文件夹时,“mini_magick20130627-17452-1k48fim.png”文件实际上就在那里。 ImageMagick 转换和调整大小也可以从命令行按预期工作。

## resize screenshot
## wrapper for imagemagick
require 'mini_magick'

webthumb = MiniMagick::Image.open(thumbnail_image_path)
webthumb.crop('1024x768+0+0') # width, height, top, left
webthumb.resize('250x188') # width, height
# If you want to save this image use following
webthumb.write(thumbnail_image_path)

SitesController#create 中的 Errno::ENOENT

没有这样的文件或目录 - 识别 -quiet -ping /tmp/mini_magick20130627-17452-1k48fim.png

【问题讨论】:

    标签: ruby-on-rails imagemagick tmp minimagick


    【解决方案1】:

    这是另一个有效的答案。

    编辑 development.rb(如果要与乘客一起运行)和 production.rb
    添加到文件底部

      ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
    

    Got it from this reference: Passenger + Carrierwave + Rails

    【讨论】:

      【解决方案2】:

      我会回答我自己的问题,因为其他人可能会看到此错误。这个问题与 Phusion Passenger(在 Apache 下)处理环境变量的方式有关。我在这里使用的是 Apache + Phusion Passenger 服务器。

      我通过将 ImageMagick 路径变量放入我的 apache httpd-vhosts.conf 文件中解决了这个问题:

      <VirtualHost *:80>
      ...
      SetEnv LD_LIBRARY_PATH /usr/local/lib
      SetEnv MAGICK_HOME /usr/local/lib/ImageMagick-6.8.6
      SetEnv DYLD_LIBRARY_PATH $MAGICK_HOME/lib
      SetEnv PATH $MAGICK_HOME/bin:/usr/local/bin/:$PATH
      ...
      </virtualhost>
      

      更多信息在这里-

      发件人:http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

      但是等等,我已经在 /etc/bashrc 或 /etc/profile 中设置了环境变量。为什么它们不起作用?

      如果您在 /etc/bashrc 或 /etc/profile 中设置了环境变量,那么这些环境变量在您的 shell 中可用。但是,在大多数操作系统上,Apache 不是从 shell 启动的,也不会加载 bashrc/profile 中定义的环境变量,这就是为什么在 /etc/bashrc 和 /etc/profile 中设置环境变量通常对 Apache 没有影响(以及通过归纳,在乘客和铁路流程上)。

      【讨论】:

      • 这正是我面临的问题(以及浪费的时间)。在我去把事情搞得更糟之前(!),因为这不是我可以接受的领域,我应该使用什么路径,因为 ImageMagick 不在 usr/local/lib 下?当我使用自制软件安装这些时,它会在安装时确认/usr/local/Cellar/imagemagick/6.8.0-10。我会被SetEnv MAGICK_HOME /usr/local/Cellar/imagemagick/6.8.0-10 SetEnv DYLD_LIBRARY_PATH $MAGICK_HOME/lib 诱惑但第一和第四句话让我停下来:
      【解决方案3】:

      您在 configure.xml 中设置 ImageMagick 参数: http://imagemagick.org/script/resources.php

      他们的示例不包括 tmp 目录,但您为此使用 MAGICK_TEMPORARY_PATH: http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22311 (最后一个帖子)

      【讨论】:

        【解决方案4】:

        我无法使用SetEnv PATH "$PATH:... 之类的东西设置我的$PATH,但我找到了让它工作的方法。

        在我的虚拟主机配置文件中,我将/usr/local/bin添加到$PATH(这是image magick的二进制文件所在的位置),但我还指定了所有其他$PATHs,以便一切正常:

        SetEnv PATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-15
          • 2014-04-17
          • 2012-11-02
          • 1970-01-01
          • 2011-03-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多