Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过phpseclib上传的文件减少到14字节?_Php_Ssh_Ftp_Sftp_Phpseclib - Fatal编程技术网

通过phpseclib上传的文件减少到14字节?

通过phpseclib上传的文件减少到14字节?,php,ssh,ftp,sftp,phpseclib,Php,Ssh,Ftp,Sftp,Phpseclib,我最近为我的服务器配置了phpseclib2.0;所以我对这个很陌生。当尝试使用phpseclib通过普通HTML表单和PHP上传文件小于1MB的jpg图像时,图像会准确地上传到我想要的位置,但是文件大小只有14字节(970kb是原始文件大小)。有什么帮助吗?我的代码如下: // Establish the SFTP connection $sftp = new \phpseclib\Net\SFTP('www.myhost.com'); // Login with username and

我最近为我的服务器配置了phpseclib2.0;所以我对这个很陌生。当尝试使用phpseclib通过普通HTML表单和PHP上传文件小于1MB的jpg图像时,图像会准确地上传到我想要的位置,但是文件大小只有14字节(970kb是原始文件大小)。有什么帮助吗?我的代码如下:

// Establish the SFTP connection
$sftp = new \phpseclib\Net\SFTP('www.myhost.com');

// Login with username and password, and inform if the login was successful
if (!$sftp->login('myuser','mypassword')) {
  $uploadAnswer = 'SFTP Connection failed!';
  } else {
  $uploadAnswer = 'SFTP Connection succesful!';
  // migrate to root folder
  $rootPath = $sftp->pwd();
  // Create destination Path
  $destinationPath = $rootPath.'/myfolder/'.$_FILES['myupload']['name'];

  // Load the file onto the server, and inform if upload was successful
  if (!$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'])) {
    $uploadAnswer = "There's been a problem with the Upload!";
    } else {
    $uploadAnswer = 'File successfully uploaded!';
    }
  }
当我运行此操作时,会显示消息“文件已成功上载!”也可以正确显示。这里发生了什么事???

更换线路

$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'])

根据建议,提供的链接无法正常工作。解决办法是:

$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'],\phpseclib\Net\SFTP::SOURCE_LOCAL_FILE)

这就成功了;因此,问题在于,由于某些原因,SFTP类可能无法正确识别。如果有人已经有同样的问题;请让我知道。

您检查过$\u文件是否包含您认为应该从开始的内容吗?Tbh我不知道如何做。。当我使用$_FILES['myupload']['name']获取文件名时;我得到上传文件的名称。当我回显$_文件['myupload']['tmp_name']时,我会得到一个类似于/tmp/phprandomstrings的随机创建路径。这对你有帮助吗?看。@MartinPrikryl谢谢,我看到了那篇文章,但如果我将SFTP::SOURCE_LOCAL_文件作为最后一个参数添加到put()函数中,对我来说仍然不起作用。同样奇怪的是,我必须使用new\phpseclib\Net\SFTP定义一个新的SFTP对象,正如你在上面的代码中看到的那样。当我只使用新的SFTP时,我得到的错误类“SFTP”未找到。应该是这样吗??;如果您使用phpseclib\Net\SFTP,这个文件似乎使用了相同的表示法策略
SFTP::SOURCE\u LOCAL\u FILE
works在顶部。@neubert不。。
$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'],\phpseclib\Net\SFTP::SOURCE_LOCAL_FILE)