2016-08-22 17 views
2

私はssh2_scp_sendを使用してSFTP経由であるサーバーから別のサーバーにファイルを転送しています。私はリモートサーバーへのアクセスを確認でき、GUIアプリケーション(FileZilla)を使ってファイルを転送することはできますが、私のssh2_scp_send呼び出しは失敗しています。ssh2_scp_send:おそらく不明なリモートディレクトリのために失敗します

私はこれがリモートサーバーの完全なパスを知りません(そして簡単に見つけ出すことができないため)と思われます。私は、ファイル名を渡すだけで、デフォルトで親ディレクトリにアクセスすることができると仮定しました。

$conn = ssh2_connect('domain', 22); 
$auth = ssh2_auth_password($conn, 'user', 'password'); 

if ($auth) { 
    //send the file 
    $send = ssh2_scp_send($conn, $file, $data['xml_filename']); 
} 

私は、ディレクトリを検索し、場所を把握しようとするssh2_exec($ssh_conn, 'ls -la');を使用してみましたが、それは(アクセス証明書は、私が離れてSFTPからSSHコマンドを許可していません持っている)が失敗しました。

私の質問:

  1. 完全なリモートパスを見つけるための簡単な方法がありますか?
  2. ssh2_scp_sendにデフォルトの宛先を使用するよう指示する方法はありますか?
  3. 他にどのようなトラブルシューティングを行う必要がありますか?私は上記が問題であることを推測しているだけで、まったく違うかもしれません。

答えて

1

ssh2_scp_send SFTPを実行していません - それはSCPを行います。シェルアクセスなしでSCPを実行することはできません。

あなたはphpseclib対libssh2のを使用しての執拗しているなら、あなたはssh2.sftp:// fopenのラッパーを使用して、fwrite()またはfputs()を行う必要があるでしょう。

デフォルトフルリモートパスを取得する場合は... ssh2_sftp_realpath('.')がすべきことです。

+1

はい、これは私が見つけたものです。私はssh2_sftpを初期化してからfile_get_contents/file_put_contentsを使って転送することができました – lcdservices

関連する問題