PHP exec返回"数组"而不是我的命令的结果

时间:2015-02-04 09:37:26

标签: php linux

我试图在我的本地网络服务器(openwrt)上构建一个Web终端模拟器,每次执行命令时,结果总是说" array",例如当我执行{{它没有给我网络服务器的运行时间,而是给了我uptime。这是我的剧本:

array

我希望<?php .............................. if($_POST['command']) { $command = $_POST['command']; exec("$command 2>&1 &", $output); echo $command; } echo "<form action=\"".$PHP_SELF."\" method=\"post\">"; echo "Command:<br><input type=\"text\" autofocus name=\"command\" size=\"15\" value=\"\"/><br>"; echo '<br>Result :<br><pre> <div id="show" style="font-size: 11px; word-wrap: break-word; width:550px;height:200px;border:0px solid #000;text-align:left; overflow-y: scroll;"> '.$output.'</div>'; echo '<input type="submit" name="kill" value="Kill Command" />'; echo "</form></div>"; ......................... ?> 返回我的命令结果。 现在,无论我执行什么类型的命令,$output总是返回$output,我应该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

它应该返回一个数组,因为它是在documentation中写的。

如果要逐行打印数组,请使用以下代码:

<?php
exec("$command 2>&1 &", $output);
foreach ($output as $line) {
    echo "$line\n";
}

答案 1 :(得分:0)

选项1:。您可以使用implode将数组结果组合为字符串。

exec("$command 2>&1 &", $output);
echo implode(PHP_EOL, $output);

选项2:。您可以使用shell_exec将完整的输出作为字符串返回。

echo shell_exec("$command 2>&1 &");