我正在尝试将 php 与 ssh2_connect 结合使用,以便使用以下脚本解压缩到远程文件夹:
$connection = ssh2_connect($ipaddress, 22);
if (!$connection) {
throw new Exception("Could not connect to server.");
}
if (!ssh2_auth_password($connection, $username, $password)) {
throw new Exception("Authentication failed!");
}
else {
$unzip = "unzip $filename";
//$unzip = "unzip $filename -d /home/upload/homes/folder/";
if ( ($stream = ssh2_exec( $connection, $unzip ) ) ){
$sftp = ssh2_sftp($connection);
ssh2_sftp_unlink($sftp, $filename);
}
}
我的 zip 文件包含多个文件,但解压缩函数只返回 1 个 0kB 的文件。当我使用 ssh 登录时,我可以成功解压缩文件。有什么想法吗?
libssh2的行为很奇怪。 你可能会有更好的运气使用phpseclib,一个纯粹的PHP SSH2实现。
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec("unzip $filename")
?>
如果这不起作用,您可以获取phpseclib日志并发布它们以进行进一步诊断。