我试图在我的本地网络服务器(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
,我应该如何解决这个问题?
答案 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 &");