【发布时间】:2019-11-14 23:40:34
【问题描述】:
我想从远程服务器读取一个 zip 文件。我目前必须遵循代码:
private $sftp;
public function __construct($username, $password, $serverName)
{
$this->sftp = new Net_SFTP($serverName);
if (!$this->sftp->login($username, $password)) {
exit('Login Failed');
}
}
public function buildRecords() {
$sftp = $this->sftp;
$sftp -> chdir(Constants::QUICKCHECK_OUTPUT_DIRECTORY);
echo $sftp->pwd(); // show that we're in the 'test' directory
// print_r($sftp->nlist());
foreach($sftp->nlist() as $zipFile) {
$handle = fopen("zip://" . $zipFile,'r');
while($line = fgetcsv($handle)) {
print_r($line);
}
}
}
当我运行这段代码并调用这些方法时,我得到了错误
Warning: fopen(zip://test.zip): failed to open stream: operation failed in /var/www/html/update_alerts2.php on line 67
如何解决此错误? (我正在使用 phpseclib 到 sftp)
【问题讨论】:
-
您只是将远程文件名传递给函数。您需要下载文件然后解压缩。
-
有没有办法不下载文件?
-
不,没有文件怎么解压文件?
-
我没有使用 $sftp->nlist() 引用文件吗? phpseclib.sourceforge.net/documentation/net.html#net_sftp_stat