2010-01-03 52 views
42

當我上傳的照片,我的模型驗證失敗,犯錯以及即使沒有我返回此錯誤的任何驗證:軌回形針和乘客'不被「確定」認可command`

/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

重新安裝ImageMagick ...只是爲了看看是否有補救措施。 – 2010-01-03 19:59:15

+1

這與ImageMagick有關,但是您是否也可以在模型中包含回形針聲明? 'command_path'選項需要指向安裝'identify'的位置。在命令行中,您可以使用'which identify'來確定它。 – 2010-01-03 20:11:18

+0

Bleh,你是對的Ryan(再次),如果你想回答你會得到一個大的綠色複選標記。 – 2010-01-03 20:34:43

回答

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" 
+0

我幾乎正是這個問題,除了一件事:錯誤只是當我試圖附加視頻時出現!有任何想法嗎? :( – 2010-08-31 19:14:47

+0

嗯...哪些識別不適用於我。爲什麼它不會? – sscirrus 2010-11-02 03:13:42

+0

sscirrus,請確保ImageMagick已安裝並在您的PATH中。 – 2010-11-03 00:31:00

1

要補充一點,我還沒有看到太多討論多了一個潛在的解決方案:ldconfig

我有同樣的問題,我只花了一天半的時間追蹤。我正確地重新安裝了ImageMagick,並附加了png和jpeg支持,我在環境變量中添加了LD_LIBRARY_PATHDYLD_LIBRARY_PATH,我在生產環境配置中爲Paperclip設置了:command_path選項。儘管ImageMagick命令可以從命令行運行,但沒有任何方法可以解決我的Paperclip問題。

最後在看到ldconfig順便提及,我試了一下,隨機應變。

sudo ldconfig 

我可能已經能夠通過重新啓動Apache或硬件來完成同樣的事情,但我不是在一個位置,這樣做我自己。

3

我把它通過安裝釀造工作,http://mxcl.github.com/homebrew/

然後我鍵入:

brew install imagemagick 

an d之後

gem install rmagick 

然後我剛刪除的選項路徑(Paperclip.options [:command_path] = 「...」) 我鍵入在環境/ development.rb手動和初始化/ paperclip.rb

將rmagick添加到gem文件。重新啓動服務器,它就像一個魅力!

0

如果您正在嘗試上傳視頻,那麼可能'identify'會嘗試將工作委託給ffmpeg。例如

identify Desktop/00-ScalingRails-Introduction.mp4  [[email protected]>/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從驗證錯誤

4

這發生在我身上時,我升級OS X獅子來的列表中刪除的錯誤消息。

要解決它...

注意,任何在別人面前的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(帶補丁獅),和ImageMagick的

6

我能夠通過執行以下操作來解決此問題:

brew uninstall imagemagick 
brew install imagemagick 
+0

相反:'釀造卸載imagemagick' – JjP 2012-11-15 17:58:13

1

您也將獲得這錯誤消息如果您嘗試上載包含最新版本的名稱中的冒號的文件。

15

這也可能是由於Paperclip的相當舊版本(例如版本2.4.x)與Cocaine gem的較新版本不兼容造成的。

+0

謝謝,這是一個大幫助! – Zubin 2013-04-24 04:23:45

+3

在Gemfile中添加寶石「可卡因」,「〜> 0.3.2」,並運行包更新可卡因爲我解決了問題 – 2013-06-13 09:31:21

+0

回形針2.3.4與可卡因0.4.2完全一致。回形針2.3.16失敗。 – TomDunning 2013-08-26 16:24:20

0

只是說,你也可以有這個錯誤信息是什麼意思。

在我的情況下,文件大小爲0字節長,因爲我忘記從Zip中寫入它並將其傳遞給Paperclip,然後將其傳遞給Paperclip。

這可能是有趣的檢查,你實際上可以從這個線程讀取對方的回答之前,打開與您的首選瀏覽器的文件:

1

通常它有助於指定路徑與識別命令..

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

......等人提到。但是如果版本不匹配,也會出現問題,我最近更新了應用程序的Ruby-on-Rails版本(Rails 3.1.10),但忘記更新回形針gem。我將回形針版本更新到2.8.0後,它再次運行。

+0

Mein Gott!很高興!感謝這一點,這實際上工作! – flunder 2013-05-14 21:01:19

0

也發生在我身上,我想,在上面提到的所有方法。 我只是改變回形針版本,然後一切工作正常。

0

我在使用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 

然後重啓甲基苯丙胺和感覺興高采烈,當圖像正確上傳/伸縮線。