2012-05-31 57 views
59

有可能通過的PHP中的system(),exec()和shell_exec()有什麼區別?

system(); 
exec(); 
shell_exec(); 

,但他們有什麼區別3個PHP函數來運行一個外部命令?儘管它們具體應用,但在大多數情況下,它們可以被平等地使用。我很想知道哪些是可以平等使用的首選。例如,對於解壓縮文件或壓縮文件夾(使用tar命令),哪一個是首選的(可能是從性能角度來看)?

UPDATE:在另外一個問題,我發現了一個非常有用的link描述這些功能的不同方面。我在這裏分享鏈接,其他人可能會用它來更好地理解安全問題和其他方面。

+5

爲了不被snippy,但什麼也手動對各自的功能說呢? – GordonM

+2

另外,你忘了passthru():) – GordonM

+0

@GordonM我看了手冊,但我不明白每個函數的偏好。對於很多情況,它們可以同樣使用。我想要一個實際的觀點。 – Googlebot

回答

85

exec - 執行外部程序

system - 執行外部程序並顯示輸出

shell_exec - 經由殼執行命令,並返回完整的輸出作爲一個字符串

因此,如果你不不需要輸出,我會選擇執行。

進一步瞭解詳細:

+1

好的答案夥計。 –

+6

'exec()'返回輸出的最後一行,所以如果你調用一個簡單的程序,只輸出一個像whoami或pwd這樣的單個值,那麼exec()就是完美的。 – alanaktion

相關問題