2015-07-21 147 views
0

我在Win Server 2012上IIS 8,PHP 5.6,Imagick模塊3.1.2,ImageMagick 6.8.7-2 2013-10-18 Q16。ImageMagick錯誤:閱讀PDF

我已經經歷了所有的後記委託讀取失敗的錯誤,並已完成了以下: - 安裝GhostScript的 - 檢查發現GS和Imagick是在PATH VAR - 經過,我可以使用在命令提示符下轉換(不工作) - PHP exec(「whoami」)返回nt authority \ iusr,我爲完全控制添加了 - 我嘗試使用全路徑反斜槓()雙反斜槓(\)foward-slashes(/) - 我沒有認爲它與路徑有任何關係,因爲如果我在沒有路徑的情況下在jpg上嘗試相同的代碼,它就會起作用。腳本和文件位於相同的路徑中。

這是我的PHP代碼:

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(E_ALL); 
echo exec("whoami"); echo "<br/>"; 
echo exec("convert.exe dr.pdf dr.jpg 2>&1"); // Does not work and gives below error 
echo "<br/>"; 

$im = new imagick();   
$im->readimage("dr.pdf"); 
$pages = $im->getNumberImages(); 

echo $pages; 

?> 

輸出:

nt authority\iusr convert.exe: no images defined `dr.jpg' @ error/convert.c/ConvertImageCommand/3145.

Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `dr.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/682' in D:\WWW\DEMO\data\temp\test.php:13 Stack trace: #0 D:\WWW\DEMO\data\temp\test.php(13): Imagick->readimage('dr.pdf') #1 {main} thrown in D:\WWW\DEMO\data\temp\test.php on line 13

任何幫助將不勝感激。 問候 約翰

回答

1

爲了誰可能會遇到同樣的問題,任何人: 變動c的權限:\ WINDOWS \ TEMP,以包括IIS_IUSRS和用戶

後,我這樣做的一切似乎工作完全控制!

注意:我必須升級到最新的PECL Imagick模塊才能看到GhostScript返回的完整錯誤,它顯示GhostScript正試圖在Windows Temp文件夾中執行轉換。 奇怪的是,我的PHP腳本從命令行工作,但不是從網站。但顯然這是一個許可問題。

我張貼了誰運行到同樣的問題,下面的安裝步驟(或者,如果我需要在未來的指南,我忘了:)) 在Windows 2012 Server和IIS 8

  1. 安裝贏平臺安裝程序(HTTPS://www.microsoft.com/web/downloads/platform.aspx)
  2. 轉到IIS管理器和開放的Web平臺安裝程序並安裝PHP 5.6
  3. 下載ImageMagick的86 DLL從這裏安裝:http://www.imagemagick.org/download/binaries/ImageMagick-6.9.1-9-Q16-x86-dll.exe
  4. I安裝ImageMagick並確保$ _SERVER [「Path」]具有配置的ImageMagick路徑。
  5. 下載最新的PECL ImageMagick的86 NonThreadSafe PHP模塊的位置:http://windows.php.net/downloads/pecl/releases/imagick/3.3.0RC2/php_imagick-3.3.0rc2-5.6-nts-vc11-x86.zip
  6. 複製所有的PECL ImageMagick的DLL文件到PHP \分機
  7. 在php.ini文件中添加擴展= p​​hp_imagick.dll
  8. 下載並安裝GhostScript x64在這裏:http://downloads.ghostscript.com/public/gs916w64.exe(不是x86,因爲ImageMagick代表64位GhostScript)
  9. 確保GhostScript路徑位於$ _SERVER [「Path」]變量(C: \ Program Files \ gs \ gs9。16 \ BIN)
  10. 重要的最後一步:添加用戶權限到C:\ WINDOWS \ TEMP爲IIS_USRS和用戶
  11. 重新啓動服務器(通常需要PHP看到的路徑)

什麼東西幫助我正在通過命令提示符測試我最基本的腳本> php.exe test.php 如果您在安裝過程中發生了錯誤,或者您需要VC Redist,這幾乎總是會顯示錯誤。網站查詢並不總是向您顯示啓動錯誤。