phpseclib产生奇怪的输出

时间:2015-10-14 09:52:00

标签: php phpseclib

我有代码在我的服务器上生成一个文本文件。然后我需要使用sftp将此文件上传到另一台服务器。为了开始,我做

if(performLdapOperations()) {
    sleep(10);
    performFtpOperation();
}

performLdapOperations生成文本文件并将其放在我的服务器上,performFtpOperation获取此文本文件并上传到另一台服务器。这是我的功能

function performFtpOperation() {

    global $config;

    $local_directory = getcwd() .'/outputs/';
    $remote_directory = '/home/newfolder/';

    $sftp = new SFTP($config::FTP_SERVER, 22, 10);

    if (!$sftp->login($config::FTP_USER, $config::FTP_PASSWORD)) {
        exit('Login Failed');
    }

    $files_to_upload = array();

    /* Open the local directory form where you want to upload the files */
    if ($handle = opendir($local_directory))
    {
        /* This is the correct way to loop over the directory. */
        while (false !== ($file = readdir($handle)))
        {
            if ($file != "." && $file != "..")
            {
                $files_to_upload[] = $file;
            }
        }

        closedir($handle);
    }

    if(!empty($files_to_upload))
    {
        /* Now upload all the files to the remote server */
        foreach($files_to_upload as $file)
        {
            $success = $sftp->put($remote_directory . $file,
                $local_directory . $file,
                NET_SFTP_LOCAL_FILE);
        }
    }
}

因此生成的文本文件位于我的outputs文件夹中。然后,我想要获取此文件并上传到新服务器到/ home / newfolder /

位置

一切似乎都有效,文件似乎上传到新服务器。但是,当我打开已上载的文件时,它包含的是文件所在的路径,没有别的。我的服务器上的文件位于outputs文件夹中,包含了所有内容,由于某些原因,通过sftp发送时出现了问题?

我的代码中是否有可能导致此问题的内容?

由于

1 个答案:

答案 0 :(得分:0)

看起来你正在使用命名空间的2.0版本的phpseclib。如果是这种情况那么问题在于这一行:

sed

试试这个:

$success = $sftp->put($remote_directory . $file,
    $local_directory . $file,
    NET_SFTP_LOCAL_FILE);