【问题标题】:imagickException: Postscript delegate failed imagick IISimagickException: Postscript 委托失败 imagick IIS
【发布时间】:2014-01-24 15:45:29
【问题描述】:

我正在使用这些行将 pdf 转换为 jpg:

$img = new imagick($url.'[0]');
$im->setImageColorspace(255);
$im->setCompressionQuality(95);
$im->setImageFormat('jpeg');

我已经安装了 imagick 3.1.0RC2 和软 ImageMagick 6.7.7-10 2012-06-27 Q16 (x86)。我还有一个 x86 PHP 5.4.22 非线程,我在 Windows Server 2012 上使用 IIS 8。php_imagick.dll 用于 5.14 nts,所以它应该可以工作。 ghostscript版本是gs9.10,我安装的是32位和64位。它可以与 msdos 命令行完美配合,但不能与 PHP 配合使用。

然后我在创建对象时收到此错误。

ImagickException: Postscript 委托失败 `D:\inetpub\website\sites\default\files\image_2.pdf':没有这样的文件或 目录@error/pdf.c/ReadPDFImage/677 in Imagick->__construct()

是环境变量问题吗? 我有 imagick 文件夹和 ghostscript 的 bin 文件夹作为 windows 环境变量。

有什么想法吗?

干杯

【问题讨论】:

  • PHP“用户”和您的用户的环境可能不同。检查两个用户的环境 PATH,以及任何以 GS_ 开头的环境变量
  • 对于他们两个我都有 C:\Program Files\gs\gs9.10\bin 但我没有任何 GS 环境变量。我应该为那个输入什么?
  • 您并不特别需要任何,尽管安装程序通常在 Windows 上设置至少一个。如果工作的用户没有任何 GS_* 环境变量并且工作,那么这显然不是问题。
  • 好的,谢谢!你还有其他线索吗?
  • 抱歉,不,我能想到的就这些了。

标签: php pdf imagemagick ghostscript imagick


【解决方案1】:

我终于找到答案了! 问题是windows的临时文件夹(c:\windows\temp)(你在php.ini中的upload_tmp_dir)必须为用户IUSR或IIS_IUSRS读写(取决于你的IIS版本) 谢谢大家的帮助

【讨论】:

    【解决方案2】:

    这似乎表明imagick找不到ghostscript可执行文件。

    确保 GS 可执行文件位于相关 PATH 中:

    <?php
    phpinfo(INFO_ENVIRONMENT);
    ?>
    

    ...在该页面中搜索 PATH。

    如果不存在,请将其添加到需要它的任何脚本中:

    <?php
    putenv(getenv('PATH').':path/to/ghostscript/executable')
    ?>
    

    【讨论】:

    • 您提到您拥有 32 位和 64 位版本;所有可执行文件的位数应匹配。说它在“程序文件”而不是“程序文件(x86)”中意味着 - 除非您仍在 XP 或更低版本 - 您正在引用 64 位可执行文件。 32 位 imagemagick 很可能无法运行 64 位库。如果您仍然安装了 32 位版本,请确保 PATH 指向该版本。如果不行,卸载64位版本,安装32位版本,重复上述步骤。
    • 我安装的是 64bits 版本,因为 3 不工作,我会再试一次以防万一。谢谢
    猜你喜欢
    • 2014-06-18
    • 2012-04-04
    • 2019-04-17
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2011-09-10
    相关资源
    最近更新 更多