2

現在、PHP 用の SSH2 組み込みライブラリ (バージョン 5.5 を実行) の使用に苦労しています。タイトルにあるように SFTP サーバーにファイルをアップロードしようとしていますが、「ストリーム操作に失敗しました」というエラー メッセージが表示され続けます。

コード自体をデバッグしようとすると接続が機能し、sftp リソースに ID が正しく割り当てられますが、ファイルをリモート サーバーに直接書き込むために fopen が呼び出されると失敗します。

// open Live environment if we are not in dev
$connection = ssh2_connect($this->_settings['source_host'], 22);
$authSuccess = ssh2_auth_password($connection, $this-  >_settings['source_user'], $this->_settings['source_password']);
$sftp = ssh2_sftp($connection);

そして最後に fopen() 呼び出し:

if($operation == 'export') {
    $handle = fopen("ssh2.sftp://".$sftp."/remotecopy/IN/".$filename, $mode);
}

_settings 配列からのデータも正しく使用されているかどうかを確認するために、独自のコードにデバッグ メッセージを追加しましたが、ストリーム エラーについては説明できません。

Message:  fopen(): Unable to open ssh2.sftp://Resource id #173/PATH GOES HERE/filename.xxx on remote host

Message:  fopen(ssh2.sftp://Resource id #173/PATH GOES HERE/filename.xxx): failed to open stream: operation failed

注意として、ファイルはリモートホストに存在しませんが、私の知る限り、PHP fopen() の「w」モードでは、ファイルが存在しない場合はファイルを作成する必要があります。

私たちのプロジェクト全体が組み込みの ssh2 ライブラリを使用しているため、他の PHP ライブラリを使用できません。

4

2 に答える 2

2

答えは簡単でした。リモート サーバーのパスの形式が正しくありませんでした。設定を確認した後、問題なく動作します。

ヒントとヘルプをありがとうございました。

于 2015-03-10T08:44:28.767 に答える