私のサブのためのコード:このサブは、テスト・スクリプトから呼び出されたときに異なる結果
sub put_file
{
my($host, $placement_directory, $tar_directory, $filename, $user, $pass) = @_;
my $ftp = Net::FTP->new($host) or die "cannot connect to localhost";
$ftp->login($user, $pass) or die "cannot log in";
$ftp->cwd($placement_directory);
print $tar_directory."/".$filename;
$ftp->put("$tar_directory/$filename") or die "cannot put file ", $ftp->message;
print "File has been placed \n";
}
ので(つまり、コマンドラインから実行します)同じ設定を使用していますCGIスクリプトと同じものをすべて実行すると、エラーは検出されず、ファイルは正しく配置されます。サブスクリプトがCGIスクリプトから呼び出されると、スクリプトは$ tar_directory "/"。$ filenameを出力しますが、 "ファイルは配置されませんでした。\ n"とftp->メッセージ出力は "ファイルディレクトリを変更できませんでした"それはそれの前にcwd行から来ているようだ。
その他の情報: 同じ結果を持つ複数のユーザーとしてテストスクリプトを実行しようとしました。 私は厳格と警告を使用します。 移動されるtarファイルは、スクリプトによって作成されます。
私はperlを使い慣れているので、私はこれに固執し、Googleの力を使って助けを見つけることができないので、助言が役に立ちます。
あなたのWebサーバーには、$ tar_directoryから読み取る権限がないようです。 – gangabass
特定のディレクトリに対するフォルダのアクセス許可により、すべてのユーザーがそのフォルダから読み取ることができます。上位ディレクトリに権限がないと失敗しますか? – wDroter
上位ディレクトリに十分な権限がないと失敗する可能性があります。 – Sorpigal