2015-07-21 143 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,这几乎总是会显示错误。网站查询并不总是向您显示启动错误。