Problem mit Net::FTP
Rolf
- cgi
Hallo,
ich bin gerade dabei einen FTP-Client als CGI zu schreiben, komme mit dem Modul Net::FTP auch ganz gut zurecht, offensichtlich hat mein Provider das Teil auch installiert... die Demo geht ja, Aber: warum geht die folg. Sub nicht? Alle Eingaben sind richtig, auf meinem Win98 Rechner geht auch alles, jedoch auf Linux/Apache beim Provider wills nicht, hat jemand eine Idee?
use Net::FTP;
use CGI;
$q = new CGI;
my $host_name = $q->param('hostname');
$ftp = Net::FTP->new($host_name); # klappt!
sub download{
$ftp->get($remote_datei, $lokale_datei); # Schlägt fehl, Rückgabe ist stets ""
}
Viele Grüße aus Erfurt, Rolf (Domspatz)
PS: Kleiner Ausblick auf das fertige Proggi ;-)http://www.i-netlab.de/cgi-bin/rftp_demo.cgi
Moin
use Net::FTP;
use CGI;
$q = new CGI;
my $host_name = $q->param('hostname');
$ftp = Net::FTP->new($host_name); # klappt!
Ich kenn mich da ja nicht besonders aus, aber fehlt hier nicht $ftp->login oder hast du das nur nicht mit gepostet?
sub download{
»» # Alle Variablen sind belegt
»» $ftp->get($remote_datei, $lokale_datei); # Schlägt fehl, Rückgabe ist stets ""
}
Viele Grüße aus Erfurt, Rolf (Domspatz)
PS: Kleiner Ausblick auf das fertige Proggi ;-)http://www.i-netlab.de/cgi-bin/rftp_demo.cgi
Sieht gut aus! *g*
Stephan
Hallo Stephan, ich bin dahintergekommen warum es nicht geht... liegt z.B. daran, dass die Methode $ftp->get("remote_datei", "lokale_datei"); zwar richtig aufgerufen wird, jedoch das CGI natürlich nicht weis, dass die "lokale_datei" ja auf meinen Rechner soll, gebe ich da ein z.B. "c:/datei.txt" gibts Mecker weil das CGI diese Datei auf dem Server schreiben will und da gibts nicht einmal DriveLetters ;-).
Und so sieht das im Error_Log aus:
Cannot open Local file c:\windows\desktop\t.txt: Permission denied
at /home/i-netlab.de/cgi-bin/rftp.cgi line 121
Lasse ich dasselbe CGI jedoch auf meinem Rechner zuhause laufen (WebServer muss natürlich gestartet sein) kann ich ohne Not Downloads und Uploads machen.
Viele Grüße, Rolf
PS: Die Demo funktioniert, teste mal ob Du auf Deinen FTP-Server kommst (Verzeichnis auflisten).
Hi,
Und so sieht das im Error_Log aus:
Cannot open Local file c:\windows\desktop\t.txt: Permission denied
»» at /home/i-netlab.de/cgi-bin/rftp.cgi line 121
wie darf man denn das verstehen? er kann die lokale datei nicht öffnen, weil er die erlaubnis dazu nicht vom cgi bekommen hat??
PS: Die Demo funktioniert, teste mal ob Du auf Deinen FTP-Server kommst (Verzeichnis auflisten).
Das funktioniert gut
Gruß
Stephan
Und so sieht das im Error_Log aus:
Cannot open Local file c:\windows\desktop\t.txt: Permission denied
»» at /home/i-netlab.de/cgi-bin/rftp.cgi line 121wie darf man denn das verstehen? er kann die lokale datei nicht öffnen, weil er die erlaubnis dazu nicht vom cgi bekommen hat??
Perpetuum Mobilé! Das CGI ist und bleibt ein FTP-Client, auch wenns aufm Server läuft. Und somit will die get()-Metode ein File was downgeloadet werden soll auf dem eigenen Rechner ablegen, nämlich da wo der FTP-Client läuft - also das wäre ja nun auf dem Server, und da läuft LINUX - und da gibts kein "c:\windows\desktop" ... An dieser Stelle lachen wir alle, es war ja auch schon spät gestern, selber schuld wer am Ostern mitten in der Nacht CGI-Scripten schreibt, aber die Fixe Idee hat mich schon den ganzen Tag gehabt ;-)
PS: Die Demo funktioniert, teste mal ob Du auf Deinen FTP-Server kommst (Verzeichnis auflisten).
Das funktioniert gut
Freut mich wie verrückt!
Viele Grüße, Rolf
Perpetuum Mobilé! Das CGI ist und bleibt ein FTP-Client, auch wenns aufm Server läuft. Und somit will die get()-Metode ein File was downgeloadet werden soll auf dem eigenen Rechner ablegen, nämlich da wo der FTP-Client läuft - also das wäre ja nun auf dem Server, und da läuft LINUX - und da gibts kein "c:\windows\desktop" ...
da hast du natürlich recht ... vielleicht wäre es ne möglichkeit, den empfang per mail zu machen ... ;-)
An dieser Stelle lachen wir alle, es war ja auch schon spät gestern, selber schuld wer am Ostern mitten in der Nacht CGI-Scripten schreibt, aber die Fixe Idee hat mich schon den ganzen Tag gehabt ;-)
eigentlich ist es doch auch ne gute idee ...
bye
Stephan