簡體   English   中英

PHP exec 返回“數組”而不是我的命令的結果

[英]PHP exec returns “array” instead of the result of my command

我正在嘗試在我的本地網絡服務器 (openwrt) 上構建一個網絡終端模擬器,每次執行命令時,結果總是顯示“數組”,例如當我執行uptime它不會給我我的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總是返回array ,我應該如何解決這個問題?

它應該返回一個數組,因為它是在文檔中寫的。

如果要逐行打印數組,請使用如下代碼:

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

選項 1:您可以使用implode將數組結果組合為字符串。

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

選項 2:您可以使用shell_exec ,它將完整輸出作為字符串返回。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM