Сделал маленький скрипт для заливки файлов по фтп. На моем хостинге работает нормальною. Отдал заказчику. На его хостинге вылезает ошибка. Вот кусок лога:
| Код | c:\work\Projects\aweno\complex5>uploader_ftp.pl Net::FTP>>> Net::FTP(2.77) Net::FTP>>> Exporter(5.65) Net::FTP>>> Net::Cmd(2.29) Net::FTP>>> IO::Socket::INET(1.31) Net::FTP>>> IO::Socket(1.31) Net::FTP>>> IO::Handle(1.28) Net::FTP=GLOB(0x365cdc4)<<< 220 ххх.ххх.ххх.ххх FTP server ready Connected to ftp.ххххх.ххххх.co.uk Net::FTP=GLOB(0x365cdc4)>>> USER username Net::FTP=GLOB(0x365cdc4)<<< 331 Password required for username Net::FTP=GLOB(0x365cdc4)>>> PASS .... Net::FTP=GLOB(0x365cdc4)<<< 230 Welcome to Site.UK. Logged in as username (ftp.ххххх.ххххх.co.uk) Net::FTP=GLOB(0x365cdc4)>>> TYPE I Net::FTP=GLOB(0x365cdc4)<<< 200 Type set to I Switched to binary mode (ftp.ххххх.ххххх.co.uk) Net::FTP=GLOB(0x365cdc4)>>> ALLO 2785 Net::FTP=GLOB(0x365cdc4)<<< 202 No storage allocation necessary Net::FTP=GLOB(0x365cdc4)>>> PASV Net::FTP=GLOB(0x365cdc4)<<< 227 Entering Passive Mode (213,131,252,241,241,4). Net::FTP=GLOB(0x365cdc4)>>> STOR IOkruga.pm Net::FTP=GLOB(0x365cdc4)<<< 150 Opening BINARY mode data connection for IOkruga.pm Net::FTP=GLOB(0x365cdc4)<<< 550 IOkruga.pm: No space left on device Could not send 'IOkruga.pm' to ftp.ххххх.ххххх.co.uk
|
Заявка про отсутствие места выглядит странно, через тотал командер файлы заливаются без проблем.
Если сравнить лог с успешной заливкой на мой хостинг, то видны такие отличия:
| Код | Switched to binary mode (s4.ho.ua) Net::FTP=GLOB(0x37dcd94)>>> ALLO 2785 Net::FTP=GLOB(0x37dcd94)<<< 202 ALLO command ignored. Net::FTP=GLOB(0x37dcd94)>>> PASV
|
А вот и герой дня - скрипт который заливает файлы:
| Код | sub upload { my($addr, $login, $pass, $dir) = @_; # read the directory opendir(my $DIR, $dir) or die "Could not open $dir: $!"; my @files = readdir $DIR; closedir $DIR; # start uploading while (@files > 0){ my @failed; my $ftp = get_connection($addr, $login, $pass); while( my $file = shift @files ){ my $path = "$dir/$file"; unless( -d $path ){ if( $ftp->put($path) ){ print "Uploaded $path\n"; } else { print "Could not send '$file' to $addr\n"; my $msg = $ftp->message(); if($msg=~/No space/){ $ftp->quit(); die "No enough space!"; } # try again push @failed, $file; } } } $ftp->quit(); if(@failed > 0){ print "Several files was not uploaded to $addr, try again\n"; sleep 5; @files = @failed; } } }
sub get_connection { my($addr, $login, $pass) = @_; my $ftp; while( ! ($ftp = Net::FTP->new($addr, Passive=>1, Debug=>1)) ){ print "Could not connect to $addr\n"; sleep 5; } print "Connected to $addr\n"; $ftp->login($login, $pass) or die "Could not login: ", $ftp->message; print "Logged in as $login ($addr)\n"; $ftp->binary(); print "Switched to binary mode ($addr)\n"; return $ftp; }
|
Помогите плиз советом, никак не пойму в чем дело. |