PHP SFTP简单文件上传

PHP SFTP简单文件上传,php,sftp,phpseclib,Php,Sftp,Phpseclib,我正在使用phpseclib-SFTP类,并试图上传一个类似这样的文件- $sftp = new Net_SFTP('mydomain.com'); if (!$sftp->login('user', 'password')) { exit('Login Failed'); } $sftp->put('/some-dir/',$fileTempName); 但是,该文件没有上载到some dir中,而是在之前上载到一个目录(到起始目录,假设它是根目录)。这让我发疯了,我想我

我正在使用phpseclib-SFTP类,并试图上传一个类似这样的文件-

$sftp = new Net_SFTP('mydomain.com');
if (!$sftp->login('user', 'password')) {
    exit('Login Failed');
}
$sftp->put('/some-dir/',$fileTempName);

但是,该文件没有上载到
some dir
中,而是在之前上载到一个目录(到起始目录,假设它是根目录)。这让我发疯了,我想我已经尝试了
some dir/
/some dir
/some dir/
的所有组合,但文件不会上传到那里。

我不认为你的put做了你认为它正在做的事情。根据文档,您需要执行
Net\u SFTP::chdir('/some dir/')
切换到要将文件发送到的目录,然后
put($remote\u file,$data)
,其中
remote\u file
是文件名,
$data
是实际的文件数据

示例代码:

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

echo $sftp->pwd() . "\r\n";
$sftp->put('filename.ext', 'hello, world!');
print_r($sftp->nlist());
?>


谢谢,我想这样就可以了。所以,请澄清一下(如果其他人有这个问题)$sftp->put first param是要在服务器上创建(上载)的文件名,第二个param是数据(字符串文本或文件句柄)。如果要上载到特定目录,请在使用put之前使用Net_SFTP::chdir('somedir')更改为该目录。首先检查SFTP中的当前工作目录。使用$sftp->pwd()。然后,您将能够为上传文件提供正确的路径。其次,必须提供文件路径。例如,$sftp->put('/some dir/filename_remote','localfile')$sftp->put('/some dir/filename\u remote'、'localfile',NET\u sftp\u LOCAL\u FILE)将上载文件。很抱歉,在我之前的评论中丢失了NET_SFTP_LOCAL_文件