连接到ftp服务器

时间:2012-05-08 09:58:13

标签: php codeigniter ftp

我正在尝试使用ftp_connectftp_login连接到多个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语句。

知道我做错了吗?

提前致谢

4 个答案:

答案 0 :(得分: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';
    }
}

答案 1 :(得分:1)

替换

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

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

希望这有帮助。

答案 2 :(得分:1)

让我回答我的问题。首先,我得到的回复是要检查这些问题的所有核心选项我高度评价回复但是你需要检查的一件事是你的服务器firelwall允许连接到任何传出的ftp服务器吗? 如果它不允许您连接,那么即使代码中写入的内容正确,您也无法连接到服务器。因此,在测试代码之前,请检查服务器防火墙设置。

当我允许所有传出连接时,它对我有用。

再次感谢您的回复

答案 3 :(得分: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";
    }
}