导轨回形针和乘客'不能被“识别”命令识别

当我上传一张照片时,我的模型validation失败,甚至没有任何validation错误我返回这个错误:

/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无关,因为我已经从上传中删除了任何image processing,我也尝试上传不同的MIMEtypes,如.txt文件等。

另外,我发现了一些可能起作用的东西。 一篇博文声称,把以下内容放在我的环境中(在这种情况下是development.rb)

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

这与ImageMagick有关。 command_path选项需要指向安装identify的位置。 从命令行,你可以确定这与which identify

 $ which identify /some/path/to/identify 

之后,将command_path设置为该path(在config/environments/development.rb ):

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

这也可能是由于较旧版本的Paperclip (例如版本2.4.x)与Cocainegem的较新版本不兼容造成的。

我能够通过执行以下操作来解决此问题:

 brew uninstall imagemagick brew install imagemagick 

当我将OS X升级到Lion时,这发生在我身上。

解决了…

请注意,在ghostscript重新安装之前,我不得不应用在这里find的build议: 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再次正确检测到JPEG。

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

我通过安装brew来工作, http://mxcl.github.com/homebrew/

然后我input:

 brew install imagemagick 

在那之后

 gem install rmagick 

然后我删除了在environment / development.rb中手动input的选项path(Paperclip.options [:command_path] =“…”),并初始化/ paperclip.rb

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

这工作从http://arglebargle.posterous.com/path-environment-variable-for-rails-using-pas

在VirtualHost(或乘客build立的地方)放置这样的东西:

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

要添加一个我还没有看过的更多的潜在解决scheme: ldconfig

我遇到了同样的问题,我只花了一天半的时间来追踪。 我正确地重新安装ImageMagick从源和额外的PNG和JPEG支持,我添加LD_LIBRARY_PATHDYLD_LIBRARY_PATH到环境variables,我在我的生产环境configuration中设置Paperclip :command_path选项。 虽然ImageMagick命令从命令行工作,但没有什么能解决我的Paperclip问题。

最后,看到后面提到的ldconfig后,我试了一下,并且它工作。

 sudo ldconfig 

我可能已经能够通过重新启动apache或硬件来完成同样的事情,但是我本人无法做到这一点。

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

通常它有助于指定识别命令的path..

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

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

如果您正在尝试上传video,那么“标识”尝试将工作委托给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从validation错误列表中删除了错误信息

只是说,你也可以有这个错误信息的意思。

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

在阅读这个线程的其他答案之前,检查一下您是否可以使用您的首选查看器打开该文件可能很有趣

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

确定〜/path/到/图像

甚至在尝试所有上述修复之后,仍然不适合我。 我从http://xquartz.macosforge.org/landing/安装了XQuartz,现在又重新开始了&#x3002;

也可以帮助别人…

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

我在使用OSX + MAMP + Passenger + Paperclip时遇到了这个问题,在设置好command_path并确保imagemagick已经通过brew正确安装后,为乘客正确设置了temp和upload目录为可写,仍然不起作用!

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

也就是改变说的那一行

 export DYLD_LIBRARY_PATH 

 # export DYLD_LIBRARY_PATH 

然后重新启动MAMP,感觉当你的图像正确上传/resize时的兴高采烈。