PHP输出在终端中正确,但在浏览器中不正确

时间:2019-03-22 05:47:14

标签: ssh shell-exec php-7.2 sshpass

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

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

在终端的输出是

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

但是在浏览器中, Browser Output

有趣的是,的作用就像是魅力

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

enter image description here

任何建议都适用。谢谢!

编辑:-使用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"

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

string(0) ""

1 个答案:

答案 0 :(得分:0)

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