2013-03-20 62 views
2

我想使用一个需要exec()GhostScript的库,但它无法在我的MAMP服务器上这样做。我写这一小段代码,运行测试:PHP的exec()不能运行GhostScript

<?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

是的safe_mode/safe_mode_exec_dir之设定? http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dir – 2013-03-20 17:58:05

+0

看起来像授权问题给我。你为什么不尝试在你的PHP文件的文件夹中做一个符号链接,并给它正确的授权 – ITroubs 2013-03-20 17:58:18

+0

@MichaelMacDonald:我在PHP 5.4.10,所以这些不再存在。 @ITroubs:我从我的文件所在的目录中创建了一个'ln -s/opt/local/bin/gs gs',但我不确定如何更改授权? – arnaudrg 2013-03-20 18:12:48

回答

-2
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); 
+1

-1,您应该将您的工作归功于原作者:http://www.veryinteractivepeople.com/?p=521 – Dan 2014-06-06 21:09:01

0

虽然几岁,但无论如何。我今天遇到了同样的问题(尝试在Ubuntu 14.4上使用php exec()运行ghostscript,这意味着不是mamp,而是需要单独安装apache,php,tesseract,ghostscript等),并设法通过创建bash shell脚本,其中我使用参数运行gs,然后使用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"); 

的脚本都位于同一个文件夹。

0

shell_exec而不是exec工作对我来说

+1

请考虑以下几点:[我如何写一篇好文章回答?(http://stackoverflow.com/help/how-to-answer) – hassan 2017-04-27 13:35:08