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.
我是个白痴。
会话开始时没有为用户正确设置路径...我切换到绝对路径,一切都很完美。
我正在尝试 运行 使用 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.
我是个白痴。
会话开始时没有为用户正确设置路径...我切换到绝对路径,一切都很完美。