如何使用PHP-SSH2检查远程SSH服务器中是否存在目录“xyz”?
答案 0 :(得分:20)
您可以使用sftp前缀'ssh2.sftp://'
来使用file_exists例如,通过建立连接,您可以:
$sftp = ssh2_sftp($connection);
$fileExists = file_exists('ssh2.sftp://' . $sftp . '/home/marco');
答案 1 :(得分:3)
我建议放弃PHP SSH2代替phpseclib, a pure PHP SSH implementation。
除此之外,PHP SSH2的API很糟糕。私钥必须保存在要加载的文件系统上,而使用phpseclib它们需要的只是字符串。你可以从$ _POST获取一个密钥而不必像libssh2那样将它转储到文件系统。最重要的是,libssh2要求你为publickey设置一个单独的文件,因为私钥包含公钥。
来自libssh2的ssh2_exec()也返回ANSI颜色代码,有时永远不会返回输出,有时也会(它不一致)。
最后,phpseclib是just plain faster。
答案 2 :(得分:1)
假设是一个linux服务器
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$cmd = 'if test -d "/YOUR_DIRECTORY"; then echo 1; fi';
$stream = ssh2_exec($connection, $cmd);
答案 3 :(得分:0)
<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$stream = file_exists("ssh2.sftp://$sftp/path/to/file");
?>