2010-12-05 45 views
0

當函數輸出原始輸出時,輸出包含二進制數據時,函數passthru()是很好的。但是,函數shell_exec()的文檔沒有說明返回的數據是否是二進制安全的(= raw)。PHP的passthru()vs shell_exec()

那麼,我這裏的問題是shell_exec()是否返回原始輸出?或者是否需要使用ob_start(),ob_get_contents()ob_end_clean()以及passthru()來獲取原始輸出?

回答

1

它返回一個字符串,數據寫入標準輸出。 PHP中的字符串是二進制安全的;它們可以包含\0個字符。

如果執行的命令導致寫入這些字符,則這些字符將包含在shell_exec()的結果中。你做什麼取決於你。

輸出緩衝在這裏是無關緊要的; shell_exec()不向客戶端輸出任何內容,它只返回一個字符串。

+0

所以,你是否說`shell_exec()`和`passthru()`之間的唯一區別是一個輸出直接在另一個返回輸出。那麼`passthru()`也支持返回變量。我需要獲取一些二進制數據的內容,之前我使用過passthru(),因爲文檔說它輸出** raw **數據。我用`shell_exec()`也很好嗎? – Tower 2010-12-05 18:37:37