所以我做了一件简单的事情,首先我通过 ssh2_exec (成功验证后)执行命令,然后读取变量中的答案。我的代码如下(未经身份验证)
try {
$stdout_stream = ssh2_exec($this->connection, $_cmd);
$stderr_stream = ssh2_fetch_stream($stdout_stream, \SSH2_STREAM_STDERR);
} catch (Exception $e) {
$std_output = $e->getMessage();
return false;
}
$output = "";
while (!feof($stdout_stream)) {
$output .= fgets($stdout_stream, 4096);
}
while (!feof($stderr_stream)) {
$output .= fgets($stderr_stream, 4096);
}
fclose($stdout_stream);
fclose($stderr_stream);
return $output;
Run Code Online (Sandbox Code Playgroud)
例如我尝试执行这样的 cmd:
sudo service httpd stop && sudo service httpd start
Run Code Online (Sandbox Code Playgroud)
因此,当命令执行良好时,一切都很好,响应是
关闭 httpd: [ OK ] 启动 httpd: [ OK ]
但是当我尝试在没有 sudo 的情况下执行这样的命令时
service httpd stop && service httpd start
Run Code Online (Sandbox Code Playgroud)
我知道服务器说类似“找不到命令”或类似的内容,但我无法收到此错误,此脚本无限执行。 …