2013-07-29 162 views
26

我曾嘗試使用exec()'whoami',以檢查是否正常工作的命令,我得到的PHP的exec()不執行

nt authority\system 

結果現在我需要從php運行.exe文件與參數通過exec()函數。

我在命令提示符中試過這個,它實際上用給定的參數運行程序。這是示例命令。


注意的exe文件獲取3個輸入(文件夾,FILE_NAME,report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml 

但是,當我從php文件運行此命令:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml'); 

什麼也沒有發生。這是我第一次使用exec()函數,所以我不熟悉它的細節。 出了什麼問題?

我試着使用:的

  • \\代替\
  • escapeshellarg()上的目錄
  • 周圍添加目錄文件夾的名稱

沒有運氣""

附錄:

echo exec($command) // echos < .... why? 

exec($command, $output); 
print_r($output);  // Array() 

我甚至改變了權限的文件完全控制所有用戶。 如果我從command prompt調用該程序,我會看到圖標出現在時鐘旁邊一秒鐘。

但是php的調用不會調用該程序。

編輯

即使exec('notepad.exe');不工作。有什麼事情可以用php配置來完成?

+1

確保PHP有權限執行該文件。 – Joren

+0

我怎麼能確定..... – Brian

+0

我真的不知道如何做到這一點在Windows中,因爲它的權限系統是真正的不一致。 – Joren

回答

65

我已經說過我是exec()函數的新手。在做了更多的挖掘之後,我發現2>&1需要在exec()的命令末尾添加。

謝謝@mattosmat也指出了它的評論。我沒有立即嘗試這個,因爲你說這是一個Linux命令,我在Windows上。

所以,我發現,該命令實際上是在後端執行。這就是爲什麼我看不到它實際上正在運行,這是我期待的事情。

對於你們所有人,他們有類似的問題,我的建議是使用該命令。 它會指出所有的錯誤,並告訴你有關執行的信息/細節。

exec('some_command 2>&1', $output); 
print_r($output); // to see the response to your command 

感謝所有幫助傢伙,我很感激;)

+3

瞭解這一點幫了很大忙。無法弄清楚爲什麼我沒有得到我的迴應。謝謝。 – earl3s

+1

是的,它幫助了很多。我在IIS上的PHP上得到了「訪問被拒絕」的結果。 因此,我已將NEWTWORK USER的權限添加到正在執行的文件中。 –

+0

如果你正在運行XAMPP checkout這個:http://stackoverflow.com/questions/24941078/ffmpeg-and-php-on-mac-doest-work –

0

您也可以嘗試給予你想運行的二進制程序的完整路徑。這試圖使用ImageMagick解決了我的問題。

相關問題