2010-12-08 23 views
1

PHPを使用してSFTP経由でLinuxサーバーからWindowsサーバーにファイルを送信するときに問題があります。
接続しているようですが、リモートサーバーの最後にファイルを作成できないというエラーが常に発生します。私はファイルの場所のシンタックスを間違えている可能性があります。家を\する\パス\:クライアントを経由してSFTPサーバにログインし、私は今、二つの方法を試してみましたLAMPスタックからWindows SFTPサーバーにPHP経由でファイルを送信

ssh2_scp_send()を使用して1、そして他。また fopen(ssh2.sftp://D:/path/file.csv)

をしようとは、私のホームフォルダ(すなわちDで私を置きます)私が ssh2_exec($connection, 'cd'); を実行し、ストリームをスクリーンに表示すると、私のsshセッションが現在Cドライブ上のWindowsファイルシステムにあることがわかります。

私は誰かがこれについていくつかのアドバイスをしたいと考えていました。私はこの方法に結婚していません。私は私の最後にphpを使用しています。なぜなら、それはすべてDrupalモジュールから来ているからですが、私はいつも別の方法を試して取り入れることができます。

+1

http://stackoverflow.com/questions/717854/sftp-from-within-php – ajreal

+0

CURLを見ましたか?それはSFTPを介して送信する能力を持っています。 – Darren

+0

私はまだいませんが、それは私の次の計画です。私はちょうど私がリモートのWindowsサーバーの正しいパスを得ていることを望んでいる。私はWindows用のフォーマットに慣れていないし、パスにドライブを含める必要がある場合など – Jay

答えて

0

CURLはsftpライブラリを使用できます。

$localfile = 'test.txt'; 
    $ch = curl_init(); 
    $fp = fopen ($localfile, "r") or die('Cannot open textfile'); 
    curl_setopt($ch, CURLOPT_URL,"sftp://123.123.123.123:10022/username/test.txt"); 
    curl_setopt($ch, CURLOPT_USERPWD, "username:password"); 
    curl_setopt($ch, CURLOPT_UPLOAD, 1); 
    curl_setopt($ch, CURLOPT_INFILE, $fp); 
    if(curl_exec($ch)){ 
    echo 'File was successfully transferred using SFTP'; 
    }else{ 
    echo 'File was unable to be transferred using SFTP'; 
    } 

    curl_close ($ch); 
1

は、あなたがしたいすべてを1つのファイル、カール作品を送っている場合、私は考えていますが、より多くの何かをしたい場合は - 多分ファイルがアップロードされていることを確認するように、複数のファイルをアップロードし、公開鍵認証を使用します、または何でも、カールだけで十分な汎用性はありません。

私のお勧めはphpseclib, a pure PHP SFTP implementationです。

関連する問題