当我上传照片时,我的模型未通过验证,即使没有任何验证也是错误的我已经返回此错误:
/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"
答案 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时,发生了这种情况。
解决了......
执行brew list
查看您拥有的所有套餐并将其保存在某处
卸载自制程序(请参阅此页面上的“卸载”https://github.com/mxcl/homebrew/wiki/Installation)
使用通常的
重新安装自制程序ruby -e“$(curl -fsSL https://raw.github.com/gist/323731)”
为您拥有的任何其他人重新安装所有套餐brew install ghostscript
brew install imagemagick
等
注意,在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_PATH
和DYLD_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,并在图像正确上传/调整大小时感到兴奋。