如何防止system()函数在浏览器中打印输出?

时间:2011-12-15 14:34:48

标签: php shell command-line curl system

我正在使用system() PHP函数来运行像system("curl command here",$output);这样的curl命令,但它会在屏幕上显示结果。有什么方法可以避免这种输出吗?

5 个答案:

答案 0 :(得分: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 :(得分:3)

您可以尝试使用输出缓冲。

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

答案 2 :(得分:1)

您可以修改命令字符串并附加“1> / dev / null 2>& 1”或 - 更优雅地 - 使用pipe执行该过程(参见示例#2)。

要更精确地控制流程的文件句柄,您还可以使用proc_open()

答案 3 :(得分:1)

system函数显示命令的输出,所以你在那里运气不好。

您想要更改execsystem。该函数不会显示命令的输出。

答案 4 :(得分:1)

不,您应该使用PHP curl library