我一直在两个 Ubuntu VM 之间使用 PHP 的 ssh_connect() 和多个 ssh_exec() 没有任何问题。但是,现在我需要通过OpenSSH/Cygwin从Ubuntu Server调用多个ssh_exec()到Windows机器。以下代码中 ssh2_exec() 的结果第一次打印位于 /var/www 的文件数组,但第二次或更多次返回空数组。
如果我在第二个 ssh_exec() 之前使用 ssh2_connect ,它会再次返回一个文件数组。我什至尝试使用 phpseclib 但遇到了同样的问题。此外,我需要执行其他命令,如 Git,因此 opendir() 或 readdir() 等 PHP 函数不足以解决此问题。
<?php
$host = "10.xx.x.xx";
$username = "sagunms";
$password = "password";
$conn = ssh2_connect($host, 22);
if (ssh2_auth_password($conn, $username, $password) === false) {
throw new Exception('Login is invalid');
}
//First time execution - returns array of files successfully
$stream = ssh2_exec($conn, 'cd /var/www && ls');
stream_set_blocking($stream, true);
$cmdOutput = fread($stream, 4096);
fclose($stream);
$result = explode("\n", $cmdOutput); // Convert string to array
print_r($result); // Print array
echo "<hr/>";
//Second time execution - returns an "empty array" but no errors seen
$stream = ssh2_exec($conn, 'cd /var/www && ls');
stream_set_blocking($stream, true);
$cmdOutput = fread($stream, 4096);
fclose($stream);
$result = explode("\n", $cmdOutput); // Convert string to array
print_r($result); // Print array
?>
Cygwin OpenSSH 中是否存在导致此问题的内容?谢谢。