2012-05-08 3 views
1

Я пытаюсь подключиться к многострочным ftp-серверам, используя ftp_connect и ftp_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 для каждого сервера.

Любая идея, что я делаю неправильно?

Заранее спасибо

ответ

1

Позвольте мне ответить на мой вопрос. Прежде всего, ответы, которые я получаю, были всеми параметрами corect для проверки таких проблем. Я высоко оцениваю ответы, но вам нужно проверить, что ваш сервер firelwall позволяет подключаться к любому исходящему ftp-серверу или нет? Если это не позволяет вам подключиться, даже если все, что написано правильно в коде, вы не сможете подключиться к серверу. Поэтому перед тестированием кода проверьте настройки брандмауэра сервера.

Это работало для меня, когда я разрешал все исходящие соединения.

Еще раз спасибо за ответы

1

Заменить

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

с

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

Надеется, что это помогает.

+0

теперь она дает это предупреждение ftp_login() ожидает параметр 1, чтобы быть ресурсом, логический данный –

+0

Это означает, что ваш код не может подключиться к '$ ftp_account [«сервер»]' , Проверьте, можете ли вы подключиться к этому серверу через ftp-клиенты, такие как WinSCP. –

+0

Можно ли использовать ftp-клиент filezilla для его очистки? –

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 будет ресурсом, имеет значение boolean –

+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'; 
    } 
} 
Смежные вопросы