Leeloo5E: kann Datei nicht finden

Hallo,

ich versuche mich mal wieder an Perl und möchte mit diesem eine Datei öffnen und Daten hineinschreiben. Ich versuche das ersteinmal ganz simpel mit dem Beispiel von SELFHTML
Doch hier treten schon die ersten Probleme auf: Während das Skript per Konsole mit "perl test" erfolgreich ausgeführt wird, schlagen jegliche Versuche beim Aufruf des Skripts im Browser mit der Fehlermeldung: "Datei nicht gefunden No such file or directory" fehl.
Gibts da noch nen Trick, wie ich Perl sage, er solle aufs Dateisystem zugreifen? An der Rechtevergabe sollte es eigentlich nicht liegen, da auch bei setzen des Nutzers auf wwwrun:www der zu öffnenden Datei, die selbe Fehlermeldung kommt.

Vielen Dank.

Gruß,
Leeloo

--
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
  1. Doch hier treten schon die ersten Probleme auf: Während das Skript per Konsole mit "perl test" erfolgreich ausgeführt wird, schlagen jegliche Versuche beim Aufruf des Skripts im Browser mit der Fehlermeldung: "Datei nicht gefunden No such file or directory" fehl.

    Ist das die Meldung des Browsers oder des Skripts?

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hallo,

      Doch hier treten schon die ersten Probleme auf: Während das Skript per Konsole mit "perl test" erfolgreich ausgeführt wird, schlagen jegliche Versuche beim Aufruf des Skripts im Browser mit der Fehlermeldung: "Datei nicht gefunden No such file or directory" fehl.

      Ist das die Meldung des Browsers oder des Skripts?

      Hm ... gute Frage.
      Auf Konsole läufts ohne Probleme durch. Im Browser erhalte ich die Fehlermeldung: "Software error: Datei nicht gefunden weil No such file or directory ..."
      Sagt das Skript, würd ich mal behaupten, weil ich ihm ja sage, wenn was schief läuft, gib mir die Fehler aus.

      Gruß,
      Leeloo

      --
      "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
      1. hi,

        Doch hier treten schon die ersten Probleme auf: Während das Skript per Konsole mit "perl test" erfolgreich ausgeführt wird, schlagen jegliche Versuche beim Aufruf des Skripts im Browser mit der Fehlermeldung: "Datei nicht gefunden No such file or directory" fehl.

        Ist das die Meldung des Browsers oder des Skripts?

        Hm ... gute Frage.
        Auf Konsole läufts ohne Probleme durch. Im Browser erhalte ich die Fehlermeldung: "Software error: Datei nicht gefunden weil No such file or directory ..."
        Sagt das Skript, würd ich mal behaupten, weil ich ihm ja sage, wenn was schief läuft, gib mir die Fehler aus.

        änder doch mal die Fehlermeldung im Script und überprüfe ob sich die Fehlermeldung im Browser auch ändert.

        mfG,
        steckl

        1. Hallo struppi, Hallo steckl

          hier mal die Zeile, wo Perl die Datei öffnen soll und die Fehlermeldung ausgibt:

            
           my $datei = "export.csv";  
           open(DATEI, "<", $datei) || die "Datei ($datei) nicht gefunden weil $!";  
          
          

          Fehlerausgabe ist dann immer noch:
            Datei (export.csv) nicht gefunden weil: No such file or directory at ...

          Wenn ich obiges Auskommentiere und versuche die Datei zum Schreiben zu öffnen, nämlich so

            
           open(DATEI, "+>>", $datei) || die "Problem beim Öffnen von $datei weil: $!";  
          
          

          Kommt der Fehler:
           Problem beim Öffnen von export.csv weil: Permission denied at ...

          Die Dateirechte sind auf 644 gesetzt, d.h. der Besitzer darf lesen und schreiben. Der Besitzer ist wwwrun, der ja den Apachen "ausführt".

          Hm ... da Perl das ganze ja ohne Murren auf der Konsole ausführt, könnte es vielleicht nicht sein, dass die Apache-Einstellungen mir einen Strich durch die Rechnung machen? Ich schau mal da rein, vielleicht ist dort irgendwo was eingestellt, dass es nicht erlaubt auf weder lesend noch schreibend auf die Dateien zuzugreifen.

          Gruß,
          Leeloo

          --
          "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
          1. hier mal die Zeile, wo Perl die Datei öffnen soll und die Fehlermeldung ausgibt:

            my $datei = "export.csv";
            open(DATEI, "<", $datei) || die "Datei ($datei) nicht gefunden weil $!";

            
            > Fehlerausgabe ist dann immer noch:  
            >   Datei (export.csv) nicht gefunden weil: No such file or directory at ...  
              
            Dann ist die Datei nicht in dem gleichen Verzeichniss wie dein cgi Aufruf. Was passiert, wenn du die Zeilen so änderst:  
            my $datei = "./export.csv";  
            open(DATEI, "<$datei") || die "Datei ($datei) nicht gefunden weil $!";  
              
            Struppi.
            
            -- 
            [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
            
            1. Hallo,

              Dann ist die Datei nicht in dem gleichen Verzeichniss wie dein cgi Aufruf. Was passiert, wenn du die Zeilen so änderst:
              my $datei = "./export.csv";
              open(DATEI, "<$datei") || die "Datei ($datei) nicht gefunden weil $!";

              Doch, ist sie aber. Wirklich.
              Aber wenn ich das nach deiner Empfehlung ändere, kommt diese Fehlermeldung:
               Datei (./export.csv) nicht gefunden weil: No such file or directory at ...

              Gruß,
              Leeloo

              --
              "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
              1. Dann ist die Datei nicht in dem gleichen Verzeichniss wie dein cgi Aufruf. Was passiert, wenn du die Zeilen so änderst:
                my $datei = "./export.csv";
                open(DATEI, "<$datei") || die "Datei ($datei) nicht gefunden weil $!";

                Doch, ist sie aber. Wirklich.
                Aber wenn ich das nach deiner Empfehlung ändere, kommt diese Fehlermeldung:
                Datei (./export.csv) nicht gefunden weil: No such file or directory at ...

                ich kann nur wiederholen, dann ist sie nicht in dem Pfad.

                Was ergibt:

                use Cwd;
                print "aktuelles Verzeichniss: " . cwd();

                Struppi.

                --
                Javascript ist toll (Perl auch!)
                1. Hallo struppi,

                  du hast recht. Die Datei war nicht im aktuellen Pfad, denn der war /.
                  Ich dachte immer, der aktuelle Pfad ist der, wo sich das Skript befindet, welches gerade ausgeführt wird.
                  Nungut, wieder was dazu gelernt. Wollte eigentlich vermeiden, den kompletten Pfad im Skript fest angeben zu müssen.

                  Gruß,
                  Leeloo

                  --
                  "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
      2. Ist das die Meldung des Browsers oder des Skripts?

        Hm ... gute Frage.
        Auf Konsole läufts ohne Probleme durch. Im Browser erhalte ich die Fehlermeldung: "Software error: Datei nicht gefunden weil No such file or directory ..."

        Wobei mir das bekanntr vorkommt, in deinem skript ist sicher irgendwo die Zeile:
        open F, "<$datei" or die "Datei nicht gefunden weil $!";

        o.ä.

        Lass dir noch den Dateinamen ausgeben.
        open F, "<$datei" or die "Datei ($datei) nicht gefunden weil $!";

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  2. Hallo,

    Während das Skript per Konsole mit "perl test" erfolgreich ausgeführt wird, schlagen jegliche Versuche beim Aufruf des Skripts im Browser mit der Fehlermeldung: "Datei nicht gefunden No such file or directory" fehl.

    Aus Deiner Aussage leite ich zwei mögliche Ursachen ab:
    1.) Das Script erwartet dass der Dateiname per kommandozeilenparameter übergeben wird ('test').

    2.) Im Webserverumfeld ist das aktuelle Verzeichnis während der Laufzeit des Scripts nicht jenes, von welchem Du ausgehst und Du verwendest relative Pfadangaben.

    Grüße
      Klaus