2011-12-15 43 views
1

我使用system() PHP函數來運行一些像這樣的捲曲命令system("curl command here",$output);,但它在屏幕上顯示結果。任何方式來避免這種輸出?如何防止在瀏覽器中打印輸出的system()函數?

+0

也許在它前面使用`@`? `@ system` – 2011-12-15 14:36:39

+0

你想要完成什麼?根據你引用的文檔,這是在PHP中使用`system()`(也就是執行一個命令和「_display the output_」)。是的,有辦法解決這個問題,但是可能會有一個適合你的問題的更細粒度的方法,它不涉及`system()`。 – pilcrow 2011-12-15 14:39:24

回答

3

你嘗試使用輸出緩衝。

ob_start(); 
system("curl command here",$output); 
$result = ob_get_contents(); 
ob_end_clean(); 
1

你可以要麼修改命令字符串和追加 「1>的/ dev/null的2> & 1」 或 - 更優雅 - 用pipe執行的處理(參見實施例#2)。

爲了更好地控制流程的文件句柄,您還可以使用proc_open()

5

您正在使用錯誤的功能。根據文檔:

system()就像函數的C版本一樣,它執行給定的命令並輸出結果。

所以它總是輸出。使用exec­Docs代替它不會返回(而不是輸出)的程序輸出:

$last = exec("curl command here", $output, $status); 
$output = implode("\n", $output); 

或(只是爲了完整性)使用output buffering­Docs

ob_start(); 
system("curl command here", $status); 
$output = ob_get_clean(); 
1

system功能顯示從您的命令的輸出,所以你那裏運氣不好。

你想要的是改變systemexec。該函數不會顯示命令的輸出。