2010-09-06 111 views
0

我有以下腳本來獲取PHP上傳的PDF並調用ImageMagik/Ghostscript轉換爲指定大小的圖像。PHP Exec未運行,但命令正常工作!

$tmp = exec("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"", $results); 

但是,這似乎並不奏效。日誌文件中沒有錯誤,屏幕上沒有錯誤。如果我這樣做,

$tmp = exec("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"", $results); 
echo ("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\""); 

我粘貼輸出到命令提示它工作正常(大約需要6-10秒 - 我的max_execution_time爲600

任何建議,爲什麼這可能不工作

這是由於Windows,IIS 7和PHP5

編輯:。我有兩個的CentOS和Windows同樣的問題,雙方都ImageMagik和Ghostscript安裝

編輯下面的編輯仍然失敗。

$handle = popen("convert \"{$strPDF}\" -resize 500X500 \"{$strOut}\"","r"); 
     echo "'$handle'; " . gettype($handle) . "\n"; 
     $read = fread($handle, 2096); 
     echo $read; 
     pclose($handle); 
+1

通過將變量直接放在命令行中,您正在尋求麻煩。 ** CLI注入**如果不是比* SQL注入*更危險,則是危險的。使用['escapeshellarg()'](http://php.net/escapeshellarg)。 – 2010-09-06 14:47:16

+0

@Andrew評論指出,謝謝。 – LiamB 2010-09-06 15:22:31

+0

嘗試使用popen而不是exec並讀取輸出(使用fgets) – 2010-09-06 15:24:51

回答

1
在php.ini

也許這個功能EXEC下

disable_functions 

聲明,或者如果您在

安全模式下運行

,此功能禁用PHP是當運行在safe mode

+0

(safe_mode = Off和disable_functions =)所以看起來並不是這樣的 – LiamB 2010-09-06 14:50:46

+0

可能對此文件或此目錄的權限 – 2010-09-06 14:52:33

+0

似乎不是。 – LiamB 2010-09-06 15:18:42

1

它可能是你的PATH變量的問題?

你可能會想嘗試,並在命令行,並從IIS中運行

<?php 
echo exec('cmd.exe /c echo %path%'); 
?> 

兩個,並比較它們的輸出。

+0

如果在這種情況下嘗試使用絕對路徑可能會有所幫助(特別是,即使「cmd.exe」不執行)。 – Archimedix 2010-09-09 12:05:08

2

嘗試將2> & 1添加到命令的末尾。我發現它here

exec('some_command 2>&1', $output); 
print_r($output); // to see the respond to your command 
相關問題