PHP ssh2_exec 返回流,但不是远程命令 运行

PHP ssh2_exec returning stream, but remote command not being run

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

服务器端,手动(通过 putty)使用同一帐户通过 SSH 连接到服务器允许我 运行 命令成功。

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

这里是控制会话的代码:

function connect() {
    $hnd = \ssh2_connect(Config\PORTAL_SERVER);
    if (!$hnd) return false;

    if (!\ssh2_auth_password($hnd, Config\PORTAL_USER, Config\PORTAL_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 = Portal\connect();
$result = Portal\run(
    'users',
    'all',
    array(),
    $hnd
);

json_decode 收到一个空字符串,因为流从来没有 returns 任何东西。我只能假设我以某种方式错误处理了我的流,但这并不能解释我的命令不是 运行ning.

我是个白痴。

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