У меня много проблем с копированием файла с одного сервера на другой.
Я пытался два дня.
Пожалуйста, знайте, что я использую строгий, и приведенный ниже скрипт только для тестирования.
На самом деле я получаю имя файла на «удаленном» сервере и chmod на 0755, но оно пустое.
1- Файл необходимо скопировать / ftp'd в каталог, предназначенный для "удаленных" серверов. mkdir if!.
2- «Локальный» файл для копирования существует в каталоге, отличном от каталога сценариев.
3 - После того, как файл скопирован на «удаленный» сервер, измените его на 0755.
4- Легко для всех, кроме меня. : - (
Ниже записывается файл только по имени, он пустой.
#!/usr/bin/perl -w
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
print CGI::header();
use Net::FTP;
use Net::FTP::File;
#use strict;
my $host='ftp.myserver.com';
my $ftp=Net::FTP->new($host,Timeout=>240,Passsive=>1) or $newerr=1;
push @ERRORS, "Can't ftp to $host: $!\n" if $newerr;
myerr() if $newerr;
print qq~Connected<br />~;
$ftp->login('cherry@myserver.com','mypasswd') or die "Cannot login: $@";
$datedir ='04-01-2011';
#################################
$copyfrom = $datedir;
$thisfile = 'index.pl';
$fullpath = $copyfrom.'/'.$thisfile;
$path = '/home/account/public_html/folder/'.$copyfrom;
if (-e $fullpath) {print qq~Copy source exists<br >~;}
unless (-e $fullpath) {print qq~Copy source does not exist<br >~;}
#######################################################
my $isdir = $ftp->isdir($datedir);
if (!$isdir){
print qq~Remote directory does not exist<br >~;
$ftp->mkdir($datedir) or die $ftp->message;
}
if ($isdir){
print qq~Remote directory exists<br />~;
}
#############
my $new = $datedir.'/'.$thisfile;
my $isfile = $ftp->exists($new);
if (!$isfile){
print qq~Remote file does not exist<br />~;
$ftp->cwd($copyfrom);
print "I'm in the directory ", $ftp->pwd(), "\n";
my $chkdir = $ftp->isdir($copyfrom);
if ($chkdir){print qq~directory exists<br />~;}
if (!$chkdir){print qq~directory does not exists<br />~;}
$ftp->ascii() || die $ftp->message;
$ftp->put($copyfrom, $thisfile) or die $ftp->message;
$ftp->chmod(755, $thisfile) or warn $ftp->message;
}
if ($isfile){
print qq~Remote file exists<br >~;
}
$ftp->quit;
sub myerr {
print "Error: \n";
print @ERRORS;
exit 0;
}
Теперь я также только что попробовал Net :: FTP :: File и copy (); но ошибки в браузере - ошибка программного обеспечения "текущий рабочий каталог" / "".
Я прочитал и прочитал проверено и проверено, пока я не окажусь здесь.
Помимо выбора модулей (я читал в другом месте), что я делаю не так?
Серверы являются общими для cpanel, поэтому я довольно ограничен, поэтому я попробовал эти ftp-модули.
Я открыт для исправления моего скрипта или совершенно другого подхода, который будет работать на моих серверах.
Большое спасибо за любую помощь ..