我正在尝试使用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接收一个空字符串,因为流从来没有返回任何东西。我只能假设我在某种程度上错误地处理了我的流,但这并不能解释我的命令没有运行。
我是个白痴。
当会话开始时,路径没有为用户正确设置…我切换到绝对路径,一切都很完美。