Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails imagemagick-mini_magick tmp文件错误Ruby on Rails_Ruby On Rails_Imagemagick_Tmp_Minimagick - Fatal编程技术网

Ruby on rails imagemagick-mini_magick tmp文件错误Ruby on Rails

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 =

新手Rails编码器在这里。。。。花了太多时间想弄明白这个有什么想法吗

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

## 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
但是第一个和第四个语句让我停顿: