【问题标题】:ImageMagick Errors: Reading PDFImageMagick 错误:阅读 PDF
【发布时间】:2015-10-10 21:20:12
【问题描述】:

我使用的是 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") 返回我为完全控制添加的 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: 没有定义图像 `dr.jpg' @ 错误/convert.c/ConvertImageCommand/3145.

致命错误:带有消息的未捕获异常“ImagickException” '后记委托失败`dr.pdf':没有这样的文件或目录@ D:\WWW\DEMO\data\temp\test.php:13 中的错误/pdf.c/ReadPDFImage/682' 堆栈跟踪:#0 D:\WWW\DEMO\data\temp\test.php(13): Imagick->readimage('dr.pdf') #1 {main} 投入 D:\WWW\DEMO\data\temp\test.php 第 13 行

任何帮助将不胜感激。 问候 约翰

【问题讨论】:

    标签: php pdf imagick


    【解决方案1】:

    致任何可能遇到同样问题的人: 更改 C:\Windows\Temp 的权限以包括对 IIS_IUSRS 和用户的完全控制

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

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

    我正在为遇到相同问题的人发布以下安装步骤(或者如果我将来需要指南但我忘记了:)) 在带有 IIS 8 的 Windows 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 文件中添加 extension=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 和用户添加用户权限到 C:\Windows\Temp
    11. 重启服务器(通常需要 PHP 来查看路径)

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

    【讨论】:

    • 我已经完成了你的所有步骤,但我仍然收到 PDFDelegateFailed 的错误。
    • 拜托,你能帮忙吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2011-09-29
    • 2014-03-21
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多