首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phpseclib sftp->put()命令:文件内容只是一个字符串,而不是预期的PDF文档

phpseclib sftp->put()命令:文件内容只是一个字符串,而不是预期的PDF文档
EN

Stack Overflow用户
提问于 2017-12-05 17:20:59
回答 1查看 3.1K关注 0票数 2

我试图使用$sftp()将PDF文档从舞台服务器上传到远程位置;

代码:

代码语言:javascript
复制
$sftp = new SFTP($config::SFTP_SERVER);

// login to remote server
if (!$sftp->login($config::SFTP_USER, $config::SFTP_PASSWORD)) {
    throw new Exception('Login failed');
}

// move to relevant directory
$sftp->chdir('fatca');

// upload file
$uploadFile = $sftp->put('test-pdf-upload.pdf', '/srv/www/vhosts/stage.johno.com/fatca/src/uploads/pdfs/345-553453-434__05122017_16:45:26.pdf', NET_SFTP_LOCAL_FILE);

// Error checking for local env only
var_dump($uploadFile);
var_dump($sftp->getSFTPLog());

我希望看到同样的PDF,其中包含用户数据和一些用户上传的图像。我还确认了原始PDF已经成功地在暂存服务器上创建,它是完整的,并显示了相关的信息。

结果文件是在新的远程服务器位置创建的,但是它已损坏/不可读。

var_dump($sftp->getSFTPLog());的产出也不令人鼓舞:

代码语言:javascript
复制
bool(false)

我在这里做错什么了?感觉我已经很好地遵循了phpseclib文档..。虽然这是在屏幕前漫长而漫长的日子之一!

任何建议都会一如既往地受到极大的赞赏。

EN

回答 1

Stack Overflow用户

发布于 2017-12-05 21:19:33

您正在使用phpseclib 2.0。我看得出来,因为你在做new SFTP()而不是new Net_SFTP()。对于2.0,您需要执行SFTP::SOURCE_LOCAL_FILE。例如:

代码语言:javascript
复制
$uploadFile =
    $sftp->put(
      'test-pdf-upload.pdf',
      '/srv/www/vhosts/stage.johno.com/fatca/src/uploads/pdfs/345-553453-434__05122017_16:45:26.pdf',
      SFTP::SOURCE_LOCAL_FILE);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47659231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档