2012-05-08 301 views
1

我正嘗試使用ftp_connectftp_login連接到多個ftp服務器。給出連接到ftp服務器

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語句。

任何想法我做錯了什麼?

在此先感謝

回答

1

讓我回答我的問題。首先,我得到的答覆是所有corect選項,以檢查這些問題我高度appriciate答覆但您還需要檢查的一件事是,您的服務器firelwall允許連接到任何傳出的FTP服務器或不? 如果它不允許你連接,那麼即使你的代碼中寫入的內容都正確,你也將無法連接到服務器。因此在測試代碼之前,請檢查您的服務器防火牆設置

它適用於我,當我允許所有傳出連接。

再次感謝您的答覆

1

更換

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

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

希望這有助於。

+0

現在它給出了這樣的警告ftp_login()預計參數1是資源,鑑於 –

+0

布爾這意味着你的代碼是不是能夠連接到'$ ftp_account [「服務器」]' 。檢查您是否可以通過像WinSCP這樣的ftp客戶端連接到此服務器。 –

+0

我可以使用filezilla ftp客戶端來chck它嗎? –

0

您忘記使用ftp_connect函數連接到服務器,假設在變量$ftp_account['server']中您有有效的FTP服務器主機地址。

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"; 
    } 
} 
+0

它給出了這個警告信息ftp_login()期望參數1是資源,布爾給出 –

+0

@FaryalKhan發生是因爲ftp_connect無法連接到FTP服務器並返回false。可能主機地址是無效的。嘗試更新版本的代碼。它檢查這個錯誤。 – VisioN

+0

$ connect_id爲每個服務器返回false –

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'; 
    } 
}