1

我正在尝试使用ftp_connectand连接到多个 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_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";
    }
}
于 2012-05-08T10:03:11.360 回答