我正在尝试使用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语句。
你知道我做错了什么吗?
提前感谢
发布于 2012-05-08 20:47:25
让我回答我的问题。首先,我得到的答复是所有正确的选项都要检查这样的问题,我高度赞赏的答复,但有一件事,你也需要检查是,您的服务器防火墙是否允许连接到任何传出ftp服务器?如果它不允许您连接,那么即使在您的代码中正确编写了所有内容,您也将无法连接到服务器。因此,在测试代码之前,请检查您的服务器防火墙设置。
当我允许所有传出连接时,它对我起作用了。
再次感谢您的回复
发布于 2012-05-08 18:09:34
您需要使用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-08 18:01:45
替换
<?php
$connect_id = $ftp_account['server'];
?>使用
<?php
$connect_id = ftp_connect($ftp_account['server']);
?>希望这能有所帮助。
https://stackoverflow.com/questions/10496421
复制相似问题