3

我正在尝试使用一个需要 exec() GhostScript 的库,但它在我的 MAMP 服务器上没有这样做。我写了一小段代码来运行测试:

<?php 
$cmd = "...";
$output = array();
exec($cmd, $output)
echo $output[0];
?>

首先,我设置$cmd'whoami'它可以工作,并在 PHP 和终端(我的用户名)中给出相同的结果。

然后我尝试了'/usr/texbin/latex --version'它,它也很好用。

但是当我尝试使用时'/opt/local/bin/gs --version',它会失败,而它在终端中工作。

在我看来,这既不是 PATH 问题,也不是 apache 授权问题(到目前为止我所读到的通常怀疑),所以我已经没有想法了。

提前致谢!

4

4 回答 4

0

虽然几岁,但无论如何。我今天遇到了同样的问题(尝试在 Ubuntu 14.4 上使用 php exec() 运行 ghostscript,这意味着不是 mamp,而是需要单独安装 apache、php、tesseract、ghostscript 等),并设法通过创建一个 bash 来解决它我在其中运行带有参数的 gs 的 shell 脚本,然后使用 php exec() 运行 sh 脚本。

我的 bash shell 脚本中的行:

gs -dBATCH -dNOPAUSE -r300 -sDEVICE=jpeg -sOutputFile=/var/www/html/ykinv/jpg/${theFile}

以及我的 php 脚本中的 php exec 行:

exec("sh pdf2jpgConversion.sh");

这些脚本都驻留在同一个文件夹中。

于 2015-04-21T19:07:25.840 回答
0

使用 exec() 或 shell_exec() 运行 Ghostscript 命令时,我遇到了类似的问题。我收到以下错误:

gs: /opt/lampp/lib/libtiff.so.5: no version information available (required by /usr/lib/x86_64-linux-gnu/libgs.so.9) gs: /opt/lampp/lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16) 

设置 LD_LIBRARY_PATH 变量为我解决了这个问题。

<?php

$command = 'export LD_LIBRARY_PATH="' . $path_to_library_dir .'"; ' . $path_to_binary;
shell_exec($command);

?>

在我的 Ubuntu 18.04 $path_to_library_dir 是 " /usr/share/ghostscript/9.26/lib" 并且 $path_to_binary 是 " /usr/bin/gs"

gs --help 您可以通过在终端中执行命令来验证库文件路径。用于验证 path_to_binary 的使用which gs

于 2018-12-12T05:23:03.597 回答
-1

shell_exec而不是exec为我工作

于 2017-04-27T13:05:25.730 回答
-3
Try this.

ini_set('display_errors', 1);
$pdf='test.pdf';
$quality=90;
$res='300x300';
$exportName="pdf_export_" . time();
$exportPath=realpath(dirname(__FILE__))."/$exportName/fullres/%03d.jpg";

mkdir(realpath(dirname(__FILE__))."/$exportName");
mkdir(realpath(dirname(__FILE__))."/$exportName/fullres");

set_time_limit(900);
exec("'gs' '-dNOPAUSE' '-sDEVICE=jpeg' '-dUseCIEColor' '-dTextAlphaBits=4' '-dGraphicsAlphaBits=4' '-o$exportPath' '-r$res' '-dJPEGQ=$quality' '$pdf'",$output);
于 2013-10-16T07:58:22.070 回答