3

PHP を使用してリモートの sftp の場所に存在するファイルを一覧表示しようとすると、次のエラーが発生します。

エラー 324 (net::ERR_EMPTY_RESPONSE):

サーバーは、データを送信せずに接続を閉じました。私の別のランプ サーバーでは、同じコードが正常に動作します。あなたが助けてくれるなら、私が何か欠けているところを指摘してください。前もって感謝します。

function listBuildFiles() {

global $sftp_host, $sftp_username, $sftp_password, $sftp_path;
$connection = ssh2_connect($sftp_host);
// Authenticate
if (!ssh2_auth_password($connection, $sftp_username, $sftp_password)) {
    throw new Exception('Unable to connect.');
}

// Create our SFTP resource
if (!$sftp = ssh2_sftp($connection)) {
    throw new Exception('Unable to create SFTP connection.');
}

/**
 * Now that we have our SFTP resource, we can open a directory resource
 * to get us a list of files. Here we will use the $sftp resource in
 * our address string as I previously mentioned since our ssh2://
 * protocol allows it.
 */
$files = array();
$dirHandle = opendir("ssh2.sftp://$sftp$sftp_path");
    $i=0;
// Properly scan through the directory for files, ignoring directory indexes (. & ..)
while (false !== ($file = readdir($dirHandle))) {
    if ($file != '.' && $file != '..') {
        $files[$i] = $file;
        $i++;
    }
}

echo '<select name="buildName">';
echo '<option>Please Select a build</option>';
foreach ($files as $filename) {
      echo "<option value=\"$filename\">$filename</option>";
    }
echo '</select>';
ssh2_exec($connection, "exit");

ありがとう、ウジュワル

4

2 に答える 2

1

サーバー側に問題がないことを確認するために、コンソールを開いて詳細モードで raw ssh 接続を試すことができます。

ssh -v youruser@yourhost.com

これは、サーバーとクライアント間のすべてのやり取りを追跡し、サーバー側から何らかの手がかりを与える可能性があります。

于 2012-07-09T12:33:54.207 に答える
0

純粋な PHP SFTP 実装である phpseclib を使用すると、何が起こっているかの完全なログを確認できます。例:

<?php
include('Net/SFTP.php');

define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');

echo $ssh->getLog();
print_r($ssh->getErrors());
?>

phpseclib の開発者は、サポートの提供にもかなり積極的であるため、ログやエラー メッセージ (複数可) から判断できない場合は、おそらく解決できるでしょう。

于 2012-07-10T21:44:47.757 に答える