ImageMagick 错误:阅读 PDF

ImageMagick Errors: Reading PDF

我在 Win Server 2012 IIS 8, PHP 5.6, Imagick Module 3.1.2, ImageMagick 6.8.7-2 2013-10-18 Q16.

我已通读所有 Postscript 委托失败错误并执行了以下操作: - 已安装 GhostScript - 检查 GS 和 Imagick 是否在 PATH 变量中 - 检查我可以在命令提示符下使用转换(有效) - PHP exec("whoami") returns nt authority\iusr 我为完全控制添加的 - 我尝试使用完整路径反斜杠 () 双反斜杠 (\) 正斜杠 (/) - 我不认为它与路径有任何关系,因为如果我在没有路径的 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

如有任何帮助,我们将不胜感激。 问候 约翰

对于可能 运行 遇到同样问题的任何人: 更改 C:\Windows\Temp 的权限以包括 IIS_IUSRS 和用户

的完全控制

我这样做之后一切似乎都正常了!

注意:我必须升级到最新的 PECL Imagick 模块才能看到 GhostScript 返回的完整错误,这表明 GhostScript 正在尝试在 windows Temp 文件夹中执行转换。 奇怪的是,我的 php 脚本是从命令行运行的,而不是从网站运行的。但显然这是一个权限问题。

我正在为 运行 遇到同样问题的人发布以下安装步骤(或者如果我以后需要指南但我忘记了:)) 在 Windows 带有 IIS 8

的 2012 服务器上
  1. 安装 Win 平台安装程序 (https://www.microsoft.com/web/downloads/platform.aspx)
  2. 转到 IIS 管理器并打开 Web 平台安装程序并安装 PHP 5.6
  3. 从这里下载 ImageMagick x86 DLL 安装:http://www.imagemagick.org/download/binaries/ImageMagick-6.9.1-9-Q16-x86-dll.exe
  4. 安装 ImageMagick 并确保 $_SERVER["Path"] 已配置 ImageMagick 路径。
  5. 在此处下载最新的 PECL ImageMagick x86 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\ext
  7. 在您的 php.ini 文件中添加扩展名=php_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. 重要的最后一步:为 IIS_USRS 和用户
  11. 添加 C:\Windows\Temp 的用户权限
  12. 重启服务器(PHP 通常需要查看路径)

一直对我有帮助的是通过命令提示符测试我最基本的脚本> php.exe test.php 如果您在安装时做错了什么,或者如果您需要 VC Redist,这几乎总是会向您显示错误。网站查询并不总是向您显示启动错误。