我正在尝试使用需要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授权问题(我目前所阅读的常见嫌疑人),所以我的想法已经不多了。
提前致谢!
答案 0 :(得分:0)
我的bash shell脚本中的行:
gs -dBATCH -dNOPAUSE -r300 -sDEVICE=jpeg -sOutputFile=/var/www/html/ykinv/jpg/${theFile}
我的php脚本中的php exec行:
exec("sh pdf2jpgConversion.sh");
脚本都位于同一个文件夹中。
答案 1 :(得分:0)
SELECT *
FROM your_table
WHERE DateTime BETWEEN TRUNC( DateTime ) + INTERVAL '2' HOUR
AND TRUNC( DateTime ) + INTERVAL '6' HOUR
AND DateTime >= TRUNC( SYSDATE ) - INTERVAL '7' DAY
AND DateTime < TRUNC( SYSDATE ) + INTERVAL '1' DAY
而不是shell_exec
为我工作
答案 2 :(得分: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
答案 3 :(得分:-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);