导轨回形针和乘客`不被'识别'命令'识别

时间:2010-01-03 19:58:36

标签: ruby-on-rails paperclip

当我上传照片时,我的模型未通过验证,即使没有任何验证也是错误的我已经返回此错误:

/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. and     
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command.

我确信这与ImageMagick无关,因为我已经从上传中移除了任何图像处理,我也尝试上传不同的mime类型,例如.txt文件等。

此外,我发现了一些可行的方法。一篇博客文章声称将以下内容放在我的环境中(在本例中为development.rb)

Paperclip.options[:command_path] = "/opt/local/bin"

14 个答案:

答案 0 :(得分:49)

这与ImageMagick有关。 command_path选项需要指向安装identify的位置。在命令行中,您可以使用which identify确定此内容。

$ which identify
/some/path/to/identify

然后,将command_path设置为该路径(在config/environments/development.rb中):

Paperclip.options[:command_path] = "/some/path/to"

答案 1 :(得分:15)

使用Paperclip的相当旧版本(例如,版本2.4.x)以及Cocaine gem的更新,不兼容的版本也可能导致这种情况。

答案 2 :(得分:6)

我能够通过以下方式解决这个问题:

brew uninstall imagemagick
brew install imagemagick

答案 3 :(得分:4)

当我将OS X升级为Lion时,发生了这种情况。

解决了......

注意,在ghostscript重新安装之前,我必须应用此处的建议:https://github.com/mxcl/homebrew/issues/6381

brew edit ghostscript

然后将def patches块添加到Ghostscript类的底部:

class Ghostscript < Formula
    .... existing code here ....

    def patches
        { :p0 => 'http://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/print/ghostscript/patches/patch-ak' }
    end
end 

上述补丁可能会在您阅读时合并。

之后,imagemagick再次正确检测到jpegs。

TL; DR完全卸载并重新安装自制程序,ghostscript(带有Lion的补丁)和imagemagick

答案 4 :(得分:3)

我通过安装brew http://mxcl.github.com/homebrew/

来实现它

然后我打字:

brew install imagemagick

之后

gem install rmagick

然后我刚删除了选项路径(Paperclip.options [:command_path] =“...”)  我在environment / development.rb中手动输入并初始化/ paperclip.rb

将rmagick添加到gem文件中。重新启动服务器,它就像一个魅力!

答案 5 :(得分:2)

这起作用于http://arglebargle.posterous.com/path-environment-variable-for-rails-using-pas

将此类内容放入VirtualHost(或乘客设置的任何地方):

SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin

答案 6 :(得分:1)

要添加一个我未曾多见过的潜在解决方案:ldconfig

我遇到了同样的问题,我只花了一天半的时间追踪。我使用额外的png和jpeg支持从源代码正确地重新安装了ImageMagick,我将LD_LIBRARY_PATHDYLD_LIBRARY_PATH添加到环境变量中,我在生产环境配置中为Paperclip设置了:command_path选项。尽管ImageMagick命令在命令行中起作用,但没有任何修复我的Paperclip问题。

最后看到ldconfig后面提到的那个,我一时兴起尝试了它,它起作用了。

sudo ldconfig

我可能通过重启apache或硬件来完成同样的事情,但我无法独自完成这项工作。

答案 7 :(得分:1)

如果您尝试从最新版本的名称上传包含冒号的文件,您也会收到此错误消息。

答案 8 :(得分:1)

通常使用..

指定identify命令的路径是有帮助的
Paperclip.options[:command_path] = "/your/path/to/identify"

..正如其他人提到的那样。但是如果版本不匹配也会出现问题,我最近更新了应用程序的Ruby-on-Rails版本(到Rails 3.1.10),但忘记更新回形针gem。在将回形针版本更新到2.8.0之后,它再次起作用。

答案 9 :(得分:0)

如果您正在尝试上传视频,那么很可能“识别”尝试将作品委托给ffmpeg。示例

   identify Desktop/00-ScalingRails-Introduction.mp4      [alaa@Zero>/home/alaa]
   identify: delegate failed `"ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"' @ error/delegate.c/InvokeDelegate/1061.
   identify: unable to open image `/tmp/magick-XXHF4ImT.pam':  @ error/blob.c/OpenBlob/2498

在此示例中,安装ffmpeg从验证错误列表中删除了错误消息

答案 10 :(得分:0)

只是说,你也可以知道这个错误信息。

在我的情况下,文件大小为0字节长度,因为我忘记在从Zip写入后将其刷新,并将此资源传递给Paperclip。

在阅读此主题的其他答案之前,检查您是否可以使用首选查看器实际打开文件可能会很有趣:)

答案 11 :(得分:0)

如果你是一个mac用户,这只是一个问题,因为你的操作系统更新到10.8那么它可能是一个X11问题,​​如http://support.apple.com/kb/HT5293所述

识别〜/ path / to / image

即使尝试了以上所有修复程序,也无法为我工作。 我从http://xquartz.macosforge.org/landing/安装了XQuartz,现在又重新开始了。

也可以帮助其他人......

答案 12 :(得分:0)

这也发生在我身上,我尝试了上面提到的所有方法。 我只是更改回形针版本,然后一切正常。

答案 13 :(得分:0)

我在使用OSX + MAMP + Passenger + Paperclip时遇到此问题,并在设置command_path并确保imagemagick通过brew正确安装后,正确设置temp和上传目录以便乘客可写,这仍然不会工作!

解决方案是在/ Applications / MAMP / Library / bin / envvars中编辑MAMP的envvars文件,并注释掉导出的DYLD_LIBRARY_PATH行。

即改变

的行
export DYLD_LIBRARY_PATH

# export DYLD_LIBRARY_PATH

然后重新启动MAMP,并在图像正确上传/调整大小时感到兴奋。