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 服务器上
- 安装 Win 平台安装程序 (https://www.microsoft.com/web/downloads/platform.aspx)
- 转到 IIS 管理器并打开 Web 平台安装程序并安装 PHP 5.6
- 从这里下载 ImageMagick x86 DLL 安装:http://www.imagemagick.org/download/binaries/ImageMagick-6.9.1-9-Q16-x86-dll.exe
- 安装 ImageMagick 并确保 $_SERVER["Path"] 已配置 ImageMagick 路径。
- 在此处下载最新的 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
- 将所有 PECL ImageMagick DLL 文件复制到 PHP\ext
- 在您的 php.ini 文件中添加扩展名=php_imagick.dll
- 在此处下载并安装 GhostScript x64:http://downloads.ghostscript.com/public/gs916w64.exe(不是 x86,因为 ImageMagick 代表 64 位 GhostScript)
- 确保 GhostScript 路径在 $_SERVER["Path"] 变量中 (C:\Program Files\gs\gs9.16\bin)
- 重要的最后一步:为 IIS_USRS 和用户
添加 C:\Windows\Temp 的用户权限
- 重启服务器(PHP 通常需要查看路径)
一直对我有帮助的是通过命令提示符测试我最基本的脚本> php.exe test.php
如果您在安装时做错了什么,或者如果您需要 VC Redist,这几乎总是会向您显示错误。网站查询并不总是向您显示启动错误。
我在 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 服务器上- 安装 Win 平台安装程序 (https://www.microsoft.com/web/downloads/platform.aspx)
- 转到 IIS 管理器并打开 Web 平台安装程序并安装 PHP 5.6
- 从这里下载 ImageMagick x86 DLL 安装:http://www.imagemagick.org/download/binaries/ImageMagick-6.9.1-9-Q16-x86-dll.exe
- 安装 ImageMagick 并确保 $_SERVER["Path"] 已配置 ImageMagick 路径。
- 在此处下载最新的 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
- 将所有 PECL ImageMagick DLL 文件复制到 PHP\ext
- 在您的 php.ini 文件中添加扩展名=php_imagick.dll
- 在此处下载并安装 GhostScript x64:http://downloads.ghostscript.com/public/gs916w64.exe(不是 x86,因为 ImageMagick 代表 64 位 GhostScript)
- 确保 GhostScript 路径在 $_SERVER["Path"] 变量中 (C:\Program Files\gs\gs9.16\bin)
- 重要的最后一步:为 IIS_USRS 和用户 添加 C:\Windows\Temp 的用户权限
- 重启服务器(PHP 通常需要查看路径)
一直对我有帮助的是通过命令提示符测试我最基本的脚本> php.exe test.php 如果您在安装时做错了什么,或者如果您需要 VC Redist,这几乎总是会向您显示错误。网站查询并不总是向您显示启动错误。