Le code pour mon sous:résultats différents pour la ligne de commande et CGI pour le script de formulaire web perl
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";
}
Lorsque ce sous est appelé à partir d'un script de test (qui va de la ligne de commande) qui utilise la même configuration fichier et fait tous les mêmes choses que le script CGI, aucune erreur n'est trouvée et le fichier est placé correctement. Lorsque le sous-élément est appelé depuis mon script CGI, le script affiche le répertoire $ tar. "/". $ Filename mais pas "Le fichier a été placé \ n" et les sorties du message ftp-> "Impossible de changer le répertoire." Ce qui semble provenir de la ligne cwd avant elle.
Autres informations: J'ai essayé d'exécuter le script de test en tant qu'utilisateur multiple avec le même résultat. J'utilise strict et avertissements. Le fichier tar en cours de déplacement est créé par le script.
Je suis nouveau à Perl donc tout conseil est utile parce que je suis bloqué sur ce point et ne peux pas trouver de l'aide en utilisant la puissance de Google.
Il semble que votre serveur Web n'ait pas l'autorisation de lire $ tar_directory. – gangabass
Les autorisations de dossier pour le répertoire spécifique permettent à tous les utilisateurs de lire le dossier. Cela échouerait-il si les répertoires supérieurs n'avaient pas les permissions? – wDroter
Il peut échouer si les répertoires supérieurs n'ont pas les autorisations suffisantes. – Sorpigal