1

ftp_connectと を使用して複数の ftp サーバーに接続しようとしていますftp_login。私のコードは与えられたように非常に単純です

 foreach ($ftp_accounts as $ftp_account) {
     $connect_id = $ftp_account['server'];
                $user = $ftp_account['user'];
                $pass = $ftp_account['password'];
                echo 'Ftp Server: '.$connect_id.'<br> Username: '.$user. '<br> Password: '.$pass.'<br>';
                if (ftp_login($connect_id, $user, $pass)){
                    echo "| Connected to server " . $connect_id . " as " . $user . '<br>';
                } else {
                    echo "Couldn't connect to $connect_id as $user \n";
                }
 }

データベースに、複数のサーバーとその資格情報を含むテーブルがあります。しかし、私が書いたコードは私に次のエラー(警告)メッセージを与えます

 ftp_login() expects parameter 1 to be resource, string given

そして、すべてのサーバーのelseステートメントに移動します。

私が間違っていることは何ですか?

前もって感謝します

4

4 に答える 4

2

ftp_connect()ログインする前に、を使用してサーバーに接続する必要があります。さらに、ftp_connect()ログインを試みる前に、結果をチェックして接続できたことを確認する必要があります。そうでない場合は戻りますので、ログインを試みてFALSEはいけません。

foreach ($ftp_accounts as $ftp_account) {
     $connect_id = ftp_connect($ftp_account['server']);

    if($connect_id !== false)
    {

       $user = $ftp_account['user'];
       $pass = $ftp_account['password'];
       echo 'Ftp Server: '.$connect_id.'<br> Username: '.$user. '<br> Password: '.$pass.'<br>';
       if (ftp_login($connect_id, $user, $pass)){
             echo "| Connected to server " . $connect_id . " as " . $user . '<br>';
          } else {
             echo "Couldn't connect to $connect_id as $user \n";
        } 
    } else {
       echo 'failed to connect to server';
    }
}
于 2012-05-08T10:09:34.227 に答える
1

交換

<?php
$connect_id = $ftp_account['server'];
?>

<?php
$connect_id = ftp_connect($ftp_account['server']);
?>

お役に立てれば。

于 2012-05-08T10:01:45.340 に答える
1

私の質問に答えさせてください。まず第一に、私が受け取った返信は、そのような問題をチェックするためのすべての正しいオプションでした。返信を高く評価しますが、サーバーのファイアウォールが発信 ftp サーバーへの接続を許可しているかどうかも確認する必要があります。接続できない場合は、コードにすべて正しく記述されていても、サーバーに接続できません。したがって、コードをテストする前に、サーバーのファイアウォール設定を確認してください。

すべての発信接続を許可すると、うまくいきました。

返信ありがとうございます

于 2012-05-08T12:47:24.963 に答える
0

変数に有効な FTP サーバー ホスト アドレスがftp_connectあると仮定して、関数を使用してサーバーに接続するのを忘れました。$ftp_account['server']

foreach ($ftp_accounts as $ftp_account) {
    $connect_id = ftp_connect($ftp_account['server']);
    if ($connect_id === false) {
        echo "Failed to connect to FTP server";
        continue;
    }
    $user = $ftp_account['user'];
    $pass = $ftp_account['password'];
    echo 'Ftp Server: ' . $ftp_account['server'] . '<br> Username: ' . $user . '<br> Password: ' . $pass . '<br>';
    if (ftp_login($connect_id, $user, $pass)){
        echo "| Connected to server " . $ftp_account['server'] . " as " . $user . '<br>';
    } else {
        echo "Couldn't connect to " . $ftp_account['server'] . " as " . $user . "\n";
    }
}
于 2012-05-08T10:03:11.360 に答える