Rolf: Problem mit Net::FTP

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{

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

  1. 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

    1. 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).

      1. 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

        1. 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??

          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

          1. 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