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

时间:2016-01-25 18:45:02

标签: 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 -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):

GPL Ghostscript 9.16 (2015-03-30)
Copyright (C) 2015 Artifex Software, Inc.  All rights reserved.

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

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

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