2014-01-07 65 views
4

我使用論文線到PDF轉換爲JPG imagick IIS:imagickException:後記委託失敗

$img = new imagick($url.'[0]'); 
$im->setImageColorspace(255); 
$im->setCompressionQuality(95); 
$im->setImageFormat('jpeg'); 

我有安裝imagick 3.1.0RC2與軟ImageMagick的6.7.7-10 2012-06 -27 Q16(x86)。我也有一個x86 PHP 5.4.22非線程,我在Windows Server 2012上使用IIS 8. php_imagick.dll是5.14 nts,所以它應該可以工作。 ghostscript版本是gs9.10,我安裝了32位和64位。它與msdos命令行完美配合,但不支持PHP。

然後當我創建對象時出現此錯誤。

ImagickException:後記委託失敗 `d:\的Inetpub \網站\網站\默認\文件\ image_2.pdf「:沒有這樣的文件或目錄 @錯誤/ pdf.c/ReadPDFImage/677 Imagick- > __ construct()

它是一個環境變量問題嗎? 我已經將imagick文件夾和ghostscript的bin文件夾作爲windows環境變量。

任何想法?

乾杯

+0

PHP用戶和用戶的環境可能不一樣。檢查兩個用戶的環境路徑,以及任何環境變量,從GS_ – KenS

+0

開始,他們都是C:\ Program Files \ gs \ gs9.10 \ bin,但我沒有任何GS環境變量。我應該爲那個輸入什麼? – GwenM

+0

雖然安裝程序通常在Windows上至少設置一個,但並不特別需要。如果工作的用戶沒有任何GS_ *環境變量並且工作,那麼這顯然不是問題。 – KenS

回答

2

我終於找到了答案! 問題是Windows(c:\ windows \ temp)的臨時文件夾(您在php.ini中的upload_tmp_dir)必須爲用戶IUSR或IIS_IUSRS讀取和寫入(取決於您的IIS版本) 謝謝各位幫助

1

這似乎表明imagick找不到Ghostscript的可執行文件。

確保GS可執行文件中的相關路徑:

<?php 
phpinfo(INFO_ENVIRONMENT); 
?> 

...搜索該頁面的路徑。

如果沒有的話,在任何一個腳本(S)添加它需要它:

<?php 
putenv(getenv('PATH').':path/to/ghostscript/executable') 
?> 
+0

我已經得到了「C:\ Program Files \ gs \ gs9.10 \ bin」 – GwenM

+0

您提到你有32位和64位版本;所有可執行文件的位數應該匹配。聲稱它是在「Program Files」而不是「Program Files(x86)」中,除非你仍然在XP或更低版本中 - 這意味着你引用了一個64位可執行文件。 32位imagemagick可能無法運行64位庫。如果您仍然安裝了32位版本,請確保PATH指向該位置。如果沒有,請卸載64位版本並安裝32位版本並重覆上述步驟。 – klugerama

+0

我安裝了64位版本,因爲3不工作,爲了以防萬一,我會再試一次。謝謝 – GwenM