2016-11-03 157 views
-1

私のMacからPHP経由でSFTPにローカルファイルをアップロードしようとしています。私のコード:ローカルからSFTP経由でSFTPにファイルをアップロードする

$connection = ssh2_connect($server, $port); 
if (ssh2_auth_password($connection, $username, $passwd)) { 
$sftp = ssh2_sftp($connection); 
echo "Connection successful, uploading file now..."."\n"; 
$file = '/Users/petenaylor/Desktop/diamondexclusive.mp4'; 
$contents = file_get_contents($file); 
file_put_contents("ssh2.sftp://{$sftp}/{$file}", $contents); 
} 
else { 
    echo "Unable to authenticate with server"."n"; 
} 

それは、私のローカルファイルの場所が正しいことを確認している必要がありますが、私が手にエラーメッセージがあるとして、それが接続されている:

警告:のfile_get_contents(/ユーザ/ petenaylor /デスクトップ/ diamondexclusive.mp4):ストリームを開くことに失敗しました:39行目の/home/test.phpにそのようなファイルやディレクトリがありません

警告:file_put_contents():ssh2.sftp:// Resource id#3を開くことができません//ユーザー/ petenaylor/Desktop/diamondexclusive.mp4リモートホストの/home/test.php 40行目

警告:file_put_contents(ssh2.sftp:// Resource id#3 // Users/petenaylor/Desktop/diamondexclusive.mp4):ストリームを開くことに失敗しました:行40の/home/test.phpに失敗しました

Filezillaのからログファイル:

Command: put "/Users/petenaylor/Desktop/diamondexclusive.mp4" "diamondexclusive.mp4" 
Status:   local:/Users/petenaylor/Desktop/diamondexclusive.mp4 => remote:/home/myfarewellnote/web/diamondexclusive.mp4 
Trace:   FileTransferParseResponse(0) 
Trace:   CSftpControlSocket::ResetOperation(0) 
Trace:   CControlSocket::ResetOperation(0) 
Status:   File transfer successful, transferred 12,661,295 bytes in 111 seconds 
Status:   Retrieving directory listing of "/home/myfarewellnote/web"... 
Trace:   CSftpControlSocket::ParseSubcommandResult(0) 
Trace:   CSftpControlSocket::ListSubcommandResult() 
Trace:   CSftpControlSocket::SendNextCommand() 
Trace:   CSftpControlSocket::ListSend() 
Command: ls 
Status:   Listing directory /home/myfarewellnote/web 
Trace:   CSftpControlSocket::ListParseResponse() 
Trace:   CSftpControlSocket::ResetOperation(0) 
Trace:   CControlSocket::ResetOperation(0) 
Status:   Directory listing of "/home/myfarewellnote/web" successful 
+0

スタンドアロン(GUIまたはコマンドラインを使用して '/ユーザ/ petenaylor /デスクトップ/ diamondexclusive.mp4'にファイルをアップロードすることができます)SFTPクライアント?可能であれば、私たちにそのログファイルを見せてください。 –

+0

FileZillaを使って正常に実行できます。そこからログファイルを提供しますか? –

+0

はい、どうぞ。詳細ログファイル。 –

答えて

1

はFileZillaのでは、あなたが/home/myfarewellnote/webある現在のリモート作業ディレクトリに名前diamondexclusive.mp4の下にファイルをアップロードします。

したがって、完全なターゲットパスは/home/myfarewellnote/web/diamondexclusive.mp4です。

PHPでは、ファイルを/Users/petenaylor/Desktop/diamondexclusive.mp4にアップロードしています(実際には、サーバーとは関係のないローカルソースパスです)。

あなたはFilezillaの中にファイルをアップロード同じパスを使用します。

file_put_contents("ssh2.sftp://{$sftp}/home/myfarewellnote/web/diamondexclusive.mp4", $contents); 
関連する問題