2013-03-20 97 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