PHP вывод правильно в терминале, но не в браузере - PullRequest
1 голос
/ 22 марта 2019

Я только начал работать с shell_exec в php и застрял на этом этапе.Ниже приведен мой php-скрипт, который корректно работает в терминале, но не в браузере.

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

И вывод в терминале:

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

Но в браузере Browser Output

Интересно, что просто whoami работает как шарм

<?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 голосов
/ 22 марта 2019

Это потому, что в CLI вы выполняете скрипт как пользователь из SSH (root в вашем случае), но в браузере, тот, кто выполняет скрипт, является вашим WebServer (apache / nginx).Чтобы вы могли получить root в качестве вывода в браузере, вам может потребоваться взглянуть на ob_start ob_get_contents ob_flush функции.

...