2017-07-19 9 views
0

laravelプロジェクトから別のサーバーにファイルをコピーできません。これは私がやっていることです。SSH2何が間違っていますか?

$connection = ssh2_connect($this->ftpHostname, $this->ftpPort); 

    if (!$connection) { 
     throw new \Exception("Couldn't connect to {$this->ftpHostname}:{$this->ftpPort}"); 
    } 

    $loginResult = ssh2_auth_password($connection, 'usrname', 'pswrd'); 

    if (!$loginResult) { 
     throw new \Exception("Username or Password not accepted for {$this->ftpHostname}:{$this->ftpPort}"); 
    } 

    $sftp = ssh2_sftp($connection); 
    $fullFilePath = storage_path() .'/'.$this->argument('local-file'); 
    $remoteFilePath = "ssh2.sftp://{$sftp}/{$this->argument('remote-folder')}/SomeFolder/{$this->argument('remote-filename')}.txt"; 

    $copyResult = copy($fullFilePath, $remoteFilePath); 

しかし、それはどのように私はこれを解決するのです私は、SSHで本当に新しいです

[ErrorException] 
copy(): Unable to open ssh2.sftp://Resource id #621/My Folders/Upload only/sample.txt on remote host 

私は、このエラーを与えていますか?

+0

私はssh2を使用しています。これはすべて私が知っている@ThomasMoors –

+0

これを返すのは正常ですか? ssh2.sftp://リソースID#621 エラーが –

答えて

1

$ sftpをintにキャストしてから、ssh2.sftp:// fopenラッパーで使用してください。

$remoteFilePath = "ssh2.sftp://" . (int)$sftp . "/{$this->argument('remote-folder')}/SomeFolder/{$this->argument('remote-filename')}.txt"; 

)のサンプルコードは、上記のあなたは(int型)への$ stftpをキャストしない限り、失敗したか(INTVAL使用 ssh2_sftp

から

$ストリーム=ののfopen( "ssh2.sftp://$ sftp/path/to/file "、" r "); //失敗します。

$ stream = fopen( "ssh2.sftp://"。(int)$ sftp。 "/ path/to/file"、 'r'); // joy

copy()は、fopenラッパーを使用してssh2.sftp:// uriを解釈するため、役立つはずです。

+0

の場合はimが混乱しているため、これは同じです copy():ssh2.sftp:// 621/My Folder/Upload only/sampleを開くことができません .txtリモートホスト –

+0

私の悪い、それはエラーを作成するフォルダ構造だった。あなたの答えは正しい! –

関連する問題