PHP Ghostscript错误,但命令行工作正常(将pdf解码为png)

PHP Ghostscript错误,但命令行工作正常(将pdf解码为png),php,ghostscript,Php,Ghostscript,我正在从命令行执行此命令: gs -sOutputFile=- -sDEVICE=pnggray -dFirstPage=1 -dLastPage=1 -dNOPAUSE -sPAPERSIZE=a4 -r90 -q /Volumes/DATA/03-www/temp/test.pdf -c quit 它可以很好地将pdf解码为png。然后我从php执行以下代码: $cmd = "gs -sOutputFile=- -sDEVICE=pnggray -dFirstPage=1 -dLastPa

我正在从命令行执行此命令:

gs -sOutputFile=- -sDEVICE=pnggray -dFirstPage=1 -dLastPage=1 -dNOPAUSE -sPAPERSIZE=a4 -r90 -q /Volumes/DATA/03-www/temp/test.pdf -c quit
它可以很好地将pdf解码为png。然后我从php执行以下代码:

$cmd = "gs -sOutputFile=- -sDEVICE=pnggray -dFirstPage=1 -dLastPage=1 -dNOPAUSE -sPAPERSIZE=a4 -r90 -q " . $pdf_file . " -c quit";
$img = shell_exec($cmd);
我得到了空响应。我将
2>&1
附加到$cmd以查看错误:

$cmd = "gs -sOutputFile=- -sDEVICE=pnggray -dFirstPage=1 -dLastPage=1 -dNOPAUSE -sPAPERSIZE=a4 -r90 -q " . $pdf_file . " -c quit 2>&1";
输出如下:

dyld: Library not loaded: /opt/local/lib/libtiff.5.dylib
  Referenced from: /opt/local/lib/libgs.9.16.dylib
  Reason: Incompatible library version: libgs.9.16.dylib requires version 8.0.0 or later, but libtiff.5.dylib provides version 6.0.0
Ghostscript版本提供(cli):


有什么帮助吗?

在我看来,您使用的是使用共享库的Ghostscript构建,而系统找不到libtiff 8动态库

您似乎安装了libtiff 5,但需要libtiff 8。大概libtiff 8是为您的用户安装的,但不是为PHP用户安装的,这就是为什么它可以从命令行为您工作的原因


或者,您可以使用不使用共享库的Ghostscript构建,但这意味着您可以自己构建,因为您发行版的打包程序似乎选择使用共享库。

为什么要在PHP脚本中将输出文件设置为STDOUT(即,转换后的文件放在哪里?)?系统上是否有多个Ghostscript副本?从CLI和PHP脚本内部运行时,哪个gs的输出是否匹配?我已经设置了标准输出以获取png数据作为脚本的响应。这样,我就不必编写临时文件,以便以后读取并删除它
哪个gs在php和CLI中具有相同的位置。
GPL Ghostscript 9.16 (2015-03-30)
Copyright (C) 2015 Artifex Software, Inc.  All rights reserved.