PHP ssh2_exec возвращает поток, но удаленная команда не выполняется

1

Я пытаюсь запустить команду на удаленном сервере с помощью модуля ssh2. Журналы показывают, что аутентификация прошла успешно, а ssh2_exec возвращает поток (документированное поведение успеха).

Server, SSHing на сервере, так как одна и та же учетная запись вручную (через шпаклёвку) позволяет мне успешно запустить команду.

Однако при запуске моего кода мои журналы показывают, что команда никогда не вызывается.

Вот код управления сеансом:

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 получает пустую строку, так как поток никогда ничего не возвращает. Я могу только предположить, что я как-то неправильно меняю свой поток, но это не объяснит, что моя команда не работает.

Теги:
ssh
stream

1 ответ

0
Лучший ответ

Я идиот.

Путь не устанавливается правильно для пользователя, когда начинается сеанс... Я переключился на абсолютные пути, и все идеально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню