PHP ssh2_exec返回流,但远程命令没有运行



我正在尝试使用ssh2模块在远程服务器上运行命令。日志显示身份验证成功,ssh2_exec返回一个流(记录的成功行为)。

服务器端,ssh以相同的帐户手动进入服务器(通过putty)允许我成功运行命令。

然而,当运行我的代码时,我的日志显示该命令甚至从未被调用过。

下面是控制会话的代码:
function connect() {
    $hnd = ssh2_connect(ConfigPORTAL_SERVER);
    if (!$hnd) return false;
    if (!ssh2_auth_password($hnd, ConfigPORTAL_USER, ConfigPORTAL_PASSWD))
        return false;
    return $hnd;
}
function run($api, $function, $args, $hnd) {
    $args = implode(' ', $args);
    $stream = ssh2_exec($hnd, "api $api $function $args");
    stream_set_blocking($stream, true);
    $response = stream_get_contents($stream);
    fclose($stream);
    return json_decode($response);
}

和调用它的代码:

$hnd = Portalconnect();
$result = Portalrun(
    'users',
    'all',
    array(),
    $hnd
);

json_decode接收一个空字符串,因为流从来没有返回任何东西。我只能假设我在某种程度上错误地处理了我的流,但这并不能解释我的命令没有运行。

我是个白痴。

当会话开始时,路径没有为用户正确设置…我切换到绝对路径,一切都很完美。

相关内容

  • 没有找到相关文章

最新更新