2010-01-07 103 views
0

我有一個PHP腳本,它的下載,再縮放和使用以下命令存儲的圖像:ImageMagick的無法加載遠程圖像

exec('convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg'); 

這一切都工作得很好,直到我把它放在不同的服務器上(這一個Gentoo的,如果有什麼差別。顯然,轉換不會搶遙控器的圖像,如果我給它一個url像上面返回
convert: missing an image filename 'images/somename.jpg' @ convert.c/ConvertImageCommand/2822.

我檢查了使用標誌,但似乎沒有涉及到遠程圖像..新的服務器是我有權訪問的本地機器,所以我幾乎可以無論如何 - 我該如何做這項工作?

另一個可能相關的問題是,php的file_get_contents()不會從那裏獲取遠程文件。也許這是一個防止二進制文件獲取遠程文件的系統範圍的設置?有沒有人有過這樣的問題?你是如何解決它的?

感謝,
麻辣

更新:爲了澄清
這個問題(ImageMagick的)無關用PHP。它在我的筆記本電腦上,可以很好地訪問互聯網,而且與防火牆無關。如果我打開一個外殼並鍵入
convert -sample 100x100 http://someurl.com/pic.jpg images/somename.jpg
它會因上述錯誤而失敗,甚至無法訪問Internet。另一方面,'wget'以及網頁瀏覽器等工作得很好。在其他系統上,輸入到shell中時的convert命令沒有錯誤。

,因爲我相信它是不相關的上述

+0

雖然我可以通過將它轉換爲兩步式wget→轉換過程來解決問題,但我想避免這種情況:我不想處理計時問題和製作shell腳本等。Imagemagick可以加載遠程圖像,所以我想使用這個功能,而不是隻是繞開這個問題。 – Mala 2010-01-07 07:32:11

+0

您需要重新編譯ImageMagick(第一個)和PHP(最後一個)。我不會說Gentoo,所以我不知道適當的咒語,但是我會開始查看構建配置文件中的選項。 – 2010-01-07 07:36:20

+0

'convert'仍然無法從shell中調用時獲取文件,所以我認爲它與php沒有任何關係...... ImageMagick中沒有任何構建選項似乎與遠程文件有任何關係: - \ – Mala 2010-01-07 07:43:51

回答

1

相反,不直觀的是,imagemagick必須編譯與XML支持爲了加載遠程圖像。因此,Gentoo用戶需要啓用xml useflag。

+0

Mala答覆爲我工作。謝謝一堆。 – 2011-05-24 06:32:56

1

的原因,想到的是權限問題的第一件事請忽略的file_get_contents問題。 檢查目標目錄的權限。確保imagemagick實際上可以在那裏保存文件。

請記住,從http服務器運行的PHP以不同於從命令行運行的權限運行。

DC

1

你能夠通過HTTP檢索其他資源嗎?

如果沒有,那麼服務器可能啓用防火牆,防止訪問(正如您提到的PHP file_get_contents()函數也會失敗)。

如果您能夠通過HTTP檢索其他資源,那麼您試圖從中獲取圖像的服務器可能會因某種原因阻止您訪問。

還需要注意的是,任何對exec的調用都將以與PHP相同的用戶身份運行該程序,因此請確保用戶PHP運行時沒有任何權限問題。

+0

感謝您的輸入=)有問題的問題(轉換)與PHP無關,也不支持嚴格防火牆防止HTTP請求(請參閱我的更新)。任何其他想法? – Mala 2010-01-07 13:35:59