2011-11-25 64 views
2

我需要一個關於使用PHP腳本執行.exe文件的小信息。我讀過可以使用exec()或passthru()或echo system()來執行.exe文件。關於PHP中的exec()函數

是否有可能運行存儲在我的windows計算機上的.exe文件,例如C:目錄或.exe文件應存儲在Web服務器上以通過php腳本運行它。

如果是這樣,我需要爲exec()函數提供.exe文件的路徑,例如: file.exe存儲在C:\ Programs \ mydocs \ file.exe中。

我可以在一個變量存儲這個路徑一樣

$path = C:\Programs\mydocs\file.exe; 

,並通過它像回聲的exec($ PATH);

大量的問題,我想知道從PHP profis的意見。

感謝

+1

這是他們所說的「編譯器即服務」?把你的代碼放在互聯網上,問問人們它是否可以工作?發生了什麼事情? – CodeCaster

+0

@CodeCaster - 它顯然不會工作:)。但編譯器即服務的東西往往依賴於沙箱... – Christian

回答

3

不,你的例子是一個語法錯誤

是的,如果你引用的字符串: -

$path = 'C:\Programs\mydocs\file.exe'; 
6

是否可以運行存儲在.exe文件我Windows機器說C:目錄或.exe文件應存儲在Web服務器上運行它通過PHP腳本。

PHP只能在運行它的服務器上執行文件(它也必須具有正確的權限才能執行)。

如果你正在嘗試做什麼,我認爲你正在嘗試做的,這將是執行在用戶的計算機上的命令,什麼是從使用阻止別人:

exec('format c:'); 

和格式他們的訪客C驅動器?


我可以在一個變量存儲這個路徑一樣

$path = C:\Programs\mydocs\file.exe;

,並通過它像回聲的exec($ PATH);

這會給你一個語法錯誤,你需要引號:

$path = 'C:\Programs\mydocs\file.exe'; 
+0

爲什麼不呢? – Christian

+0

@ChristianSciberras爲什麼不是什麼? – NullUserException

+0

爲什麼不格式化驅動器?如果這就是開發者想要的,爲什麼不呢? – Christian

0

只能執行該文件,如果它駐留在服務器上,服務器進程有正確的權利訪問/執行它。您無法在遠程用戶計算機上執行文件。

1

你的問題並不完全清楚你的PHP腳本在哪裏運行。如果它運行在不是您的工作站的Web服務器上,那麼很簡單;您無法通過運行在不同服務器上的PHP來打開本地應用程序。您希望啓動的應用程序必須與PHP腳本位於同一臺服務器上。

這就是說,如果你希望你的本地工作站或服務器上運行的應用程序,那麼它的簡單:

exec('C:\path\to\program.exe');

請務必使用單引號('C:\路徑\ to \ program.exe')或用雙引號(「C:\ path \ to \ program.exe」)雙反斜槓。在這種情況下,單引號稍微更有效,更合適。

0

根據不同的安全系統*的服務器上,你可能可以做你想做的。

但是,考慮到你不知道很多關於PHP的語法,我懷疑你應該exec()被玩弄。

*如suexec的Chroot環境阿帕奇,或啓用安全模式上PHP或運行它作爲一個單獨的服務(在視窗)。你注意到很多事情可能會出錯嗎?

1

如果你使用的報價,在另一種情況下(使用了引號),你可以存儲變量一樣的道路,會告訴你語法錯誤。 與接下來的兩個語法嘗試:

$path = 'C:\Programs\mydocs\file.exe'; 

或雙引號

$path = "C:\Programs\mydocs\file.exe";