1

我刚开始在 php 中使用 shell_exec 并停留在这一点上。下面是我的 php 脚本,它可以在终端中正确运行,但不能在浏览器中运行。

<?php
  echo shell_exec("ssh -tq root@192.168.31.5 \"whoami\"");
?>

终端的输出是

$ php /var/www/html/monitor/ssh.php 
root

但在浏览器中, 浏览器输出

有趣的是whoami就像一个魅力

<?php
    echo shell_exec("whoami");
?>

在此处输入图像描述

任何建议都会被采纳。谢谢!

编辑:- 使用 OB_START() 和 OB_GET_CONTENT

<?php
  ob_start();
  echo shell_exec("ssh -tq root@192.168.31.5 \"whoami\"");
  $out1 = ob_get_contents();
  ob_end_clean();
  var_dump($out1);
?>

终端输出:-

php /var/www/html/monitor/ssh.php 
string(6) "root"

浏览器中的输出(Chrome):-

string(0) ""
4

1 回答 1

0

那是因为在 CLI 中,您从 SSH (root在您的情况下)以用户身份执行脚本,但在浏览器中,执行脚本的是您的WebServer(apache/nginx)。为了让您在浏览器中获取root作为输出,您可能需要查看ob_start ob_get_contents ob_flush函数。

于 2019-03-22T06:09:46.033 回答