shell_exec没有给出任何结果,也不做任何事情

时间:2019-03-15 19:30:44

标签: php shell-exec

所以我有一个疑问,在我看来应该很容易解决。 我想连接到服务器,我已经做了很多次,然后执行了我也做了很多次的shell,但是它不起作用。

我正在使用的代码

<?php
            $ip = '1.2.3.4';
            $cmd = "ssh user@".$ip;
            $result = shell_exec($cmd." 'sudo /bin/systemctl stop wildfly.service'");
            echo "<pre>output: $result</pre>";
            echo "<div class='alert alert-success'><strong>SUCCESS</strong><br>Wildfly node has now restarted</div>"; 
?>

直接从终端运行命令

ssh user@1.2.3.4 sudo /bin/systemctl stop wildfly.service

它可以工作,但是在php中运行它却无济于事。

有人可以引导我了解我的shell_exec在做什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

function execPrint($command) {
    try {
        $result = array();
        exec($command.' 2>&1', $result);
        foreach ($result as $line) {
            print($line .  "\n");
        }
        echo '------------------------' . "\n" . "\n";
    } catch (\Exception $e) {
        print($e);
    }
    http_response_code(200);
}

我做了这个功能以获得结果

  1. 在最后一个CMD中添加2>&1
  2. 在每一行中使用print
  3. 使用trycatch捕获任何错误