Ruby on rails imagemagick-mini_magick tmp文件错误Ruby on Rails
新手Rails编码器在这里。。。。花了太多时间想弄明白这个有什么想法吗 下面的脚本在我的开发机器上工作,但在生产中失败。此脚本失败后-当我检查/tmp文件夹时,“mini_magick20130627-17452-1k48fim.png”文件实际上就在那里。ImageMagick convert和resize也可以从命令行按预期工作Ruby on rails imagemagick-mini_magick tmp文件错误Ruby on Rails,ruby-on-rails,imagemagick,tmp,minimagick,Ruby On Rails,Imagemagick,Tmp,Minimagick,新手Rails编码器在这里。。。。花了太多时间想弄明白这个有什么想法吗 下面的脚本在我的开发机器上工作,但在生产中失败。此脚本失败后-当我检查/tmp文件夹时,“mini_magick20130627-17452-1k48fim.png”文件实际上就在那里。ImageMagick convert和resize也可以从命令行按预期工作 ## resize screenshot ## wrapper for imagemagick require 'mini_magick' webthumb =
## 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中启用#创建
没有这样的文件或目录-identify-quiet-ping/tmp/mini_magick20130627-17452-1k48fim.png我将回答我自己的问题,因为其他人可能会看到此错误。这个问题与Phusion Passenger(在Apache下)处理环境变量的方式有关。我在这里使用的是Apache+Phusion乘客服务器 我通过将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>
...
SetEnv LD_LIBRARY_PATH/usr/local/lib
SetEnv MAGICK_HOME/usr/local/lib/ImageMagick-6.8.6
SetEnv DYLD_LIBRARY_路径$MAGICK_HOME/lib
SetEnv路径$MAGICK_HOME/bin:/usr/local/bin/:$PATH
...
更多信息请点击这里-
发件人:
但是等等,我已经在/etc/bashrc或/etc/profile中设置了环境变量。他们为什么不工作
如果您已经在/etc/bashrc或/etc/profile中设置了环境变量,那么这些环境变量将在shell中可用。然而,在大多数操作系统上,Apache不是从shell启动的,也不加载bashrc/profile中定义的环境变量,这就是为什么在/etc/bashrc和/etc/profile中设置环境变量通常对Apache没有影响(通过归纳,对乘客和Rails进程也没有影响).您可以在configure.xml中设置ImageMagick参数: 他们的示例不包括tmp目录,但您可以使用MAGICK_TEMPORARY_PATH:
(最后一篇帖子)这是另一个有效的答案 编辑development.rb(如果将与乘客一起运行)和production.rb
添加到文件的底部
ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
我无法使用类似于
SetEnv PATH“$PATH:…
的东西设置我的$PATH
,但我找到了一种方法让它工作
在我的vhost配置文件中,我将/usr/local/bin
添加到$PATH
(这是image magick的二进制文件所在的位置),但我还指定了所有其他$PATH
,以便它都能工作:
SetEnv PATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
这正是我所面临的问题(以及浪费的时间)。在我去把事情搞得一团糟之前(!)由于这不是一个我可以接受的领域,我应该使用什么路径,因为ImageMagick不在usr/local/lib下?因为我使用自制软件来安装这些,它在安装时确认了/usr/local/Cell/ImageMagick/6.8.0-10
。我会被SetEnv MAGICK\u HOME/usr/local/Cell/ImageMagick/6.8.0-10 SetEnv DYLD\u LIBRARY\u路径$MAGICK诱惑_HOME/lib
但是第一个和第四个语句让我停顿: