2015-10-14 5 views
0

У меня есть код, который генерирует текстовый файл на моем сервере. Затем мне нужен этот файл, загруженный на другой сервер с помощью sftp. Для того, чтобы начать вещи, яphpseclib производит странный вывод

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); 
     } 
    } 
} 

Так что текстовый файл, который производит, находится в папке моих выходов. Затем я хочу взять этот файл и загрузить его на новый сервер в папку/home/newfolder/

Все работает, и файл, кажется, загружается на новый сервер. Однако, когда я открываю файл, который был загружен, все, что он содержит, - это путь к тому, где находится файл, и ничего больше. Файл на моем сервере, который находится в папке с выводами, содержит все, по какой-то причине что-то не так, когда вы отправляете его через sftp?

В моем коде есть что-то, что может быть причиной этого?

Благодаря

ответ

0

Похоже, что вы используете версию phpseclib 2.0, которая. Пространством имен Если это так, то проблема с этой линии:

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

Попробуйте это:

$success = $sftp->put($remote_directory . $file, 
    $local_directory . $file, 
    SFTP::SOURCE_LOCAL_FILE);