我使用下面的代码将文件传输到 SFTP 服务器
use phpseclib3\Net\SFTP;
$sftp = new SFTP('localhost');
$sftp->login('user', 'password');
error_log($sftp->pwd());
foreach ($fileList as $key => $value) {
$output = $sftp->put("//data//myfile.txt, //sourceFile.txt, SFTP::SOURCE_LOCAL_FILE);
error_log($output);
}
error_log($sftp->getLastError());
// error_log($sftp->getSFTPLastError());
error_log('------------------------------------');
error_log("<pre>" . print_r($sftp->getErrors(), true) . "</pre>");
// error_log("<pre>" . print_r($sftp->getSFTPErrors(), true) . "</pre>");
error_log("<pre>" . print_r($sftp->getLog(), true) . "</pre>");
error_log("<pre>" . print_r($sftp->getSFTPLog(), true) . "</pre>");
效果很好。我遇到的唯一问题是,如果失败,它不会抛出任何错误消息(只有 $output 变为空)。 如果出现任何问题,我需要更改哪些内容才能获得正确的日志消息或至少来自 SFTP 服务器的响应?
在此处复制@neubert 评论以显示我的问题的正确答案:
您需要在文件顶部执行 Define('NET_SFTP_LOGGING', 2) 才能正常工作。