Re: Nochmal Lizenz: get ($URL) klappt nicht mehr... - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 13.April.2006, 07:56.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      auf dem Webserver muss das Perl-Modul LWP installiert sein (meist bei Perl-Standard-Installation dabei)
      Dann im Template dieses Modul einbinden mittels:

      use LWP::Simple();

      und dann sollte es funzen, wenn nicht bzw. wenn es sich mit dem BP-get überschneidet (Fehlermeldung), dann die Zeile für das Holen von fremden Inhalten evtl. so (bin mir nicht ganz sicher obs so richtig ist):

      $x = LWP::Simple::get ("$_files/$_put{datei}"); 
      

      hoffe es hilft

      Ruben


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Marco (840 Beiträge) am Donnerstag, 13.April.2006, 06:48.
    Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Meine Anpassung von der Miet- auf die Lizenzversion ist nun fast abgeschlossen. Ich arbeite gerade an dem Problem, dass der nachfolgende Code auf meiner Mietversion läuft unter der Lizen aber nicht.

      Dieser Code soll bei einem Upload automatisch die Dateigröße der hochgeladenen Datei in die DB schreiben. Ich bekomme als Dateigröße aber jetzt immer "0".

      ----
      <html><head>
      <title>baseportal Datenbank</title>
      </head><body bgcolor=ffffff>
      <perl>
      if (%_put)
        {
         if ($_filec_datei == 2)
         {
          $x = get ("$_files/$_put{datei}");
          out "X: $x<br>";
          $filesize = length($x); # Ermittle die Dateigrösse
          $filesize = sprintf('%.02f',$filesize/1024);
          $_put{timestamp}=datum(jetzt);
          $_put{filesize}=$filesize;
          out "Aktualisiere: $_put{datei_timestamp} $_put{filesize}";
         }
        }
      </perl>
      <do action=all db=xx>
      </body></html>
      
      -----

      Die Ausgabe out "X: $x<br>"; ist lediglich eine debug-Ausgabe. In meiner Mietversion wird dort der Dateiinhalt ausgegeben und in der Lizentversion wird dort "1" ausgegeben. Liefert get (url) in der Lizenzversion nur noch einen boolean-Wert zurück (Datei vorhanden / nicht vorhanden)?



      Marco

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 13.April.2006, 07:56.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      auf dem Webserver muss das Perl-Modul LWP installiert sein (meist bei Perl-Standard-Installation dabei)
      Dann im Template dieses Modul einbinden mittels:

      use LWP::Simple();

      und dann sollte es funzen, wenn nicht bzw. wenn es sich mit dem BP-get überschneidet (Fehlermeldung), dann die Zeile für das Holen von fremden Inhalten evtl. so (bin mir nicht ganz sicher obs so richtig ist):

      $x = LWP::Simple::get ("$_files/$_put{datei}"); 
      

      hoffe es hilft

      Ruben

     Antworten

    Beitrag von Marco (840 Beiträge) am Donnerstag, 13.April.2006, 08:22.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      ne, klappt leider nicht :-(

      In $x steht danach nun gar nix mehr drin... Es kommt aber auch keine Fehlermeldung.

      Wie kann ich denn überprüfen, ob das LWP-Modul installiert ist?


      Marco

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 13.April.2006, 10:57.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      schreib in ein perl-script

      use LWP::Simple;

      wenn ne Fehlermeldung kommt, isses nicht drin ;)

      das script listet dir alle installierten module auf:

      #!/usr/bin/perl
      print "<TABLE WIDTH=750><TR><TD colspan=3><FONT FACE=Arial COLOR=RED>Vorhandene Perl-Module:</FONT></TD></TR>\n";
      use File::Find;find(\&wanted,@INC);sub wanted {$count = 0;if ($File::Find::name =~ /\.pm$/) {open(MODFILE,$File::Find::name) || return;while(<MODFILE>) {if (/^ *package +(\S+);/) {push (@foundmods, $1);last;}}}}
      $message="$message\n\nPerl-Module:\n";
      my $count=0;while (@foundmods) {
       $count++;my $mod=shift(@foundmods);
       if ($count == 1) {print "<TR>";}
       if ($count <= 3) {print "<td bgcolor=\"#D1DAE0\"><FONT FACE=Arial SIZE=2>$mod</FONT></TD>";}
       if ($count == 3) {print "</TR>\n";$count=0;}
      }#///
      print "</TABLE>\n";
      



      kann das sein, das bei get mit http:// gearbeitet werden muß? ich bilde mir ein in $_files steht nur der pfad

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 14.April.2006, 10:59.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 15.April.2006, 12:53.
    Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Hast Dus schon geloest? Wenn nicht:

      get "http://...";
      

      funktioniert in allen Versionen gleich (denke ich). Lass Dir mal

      out "Aufruf: $_files/$_put{datei}";
      

      ausgeben - wahrscheinlich fehlt einfach Du vermutest das http:// vorne dran...

     Antworten

    Beitrag von Marco (840 Beiträge) am Dienstag, 18.April.2006, 09:20.
    Ich verzweifle gerade -> Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Ich dachte mir, dass ich mit frischen Kräften nach Ostern das Problem in den Girff bekomme, aber leider beisse ich mir immer noch die Zähne aus :-(

      Also das Problem stellt sich nun wie folgt dar: Prinzipiell geht es so, wie von Euch oben beschrieben... nur nicht für neue Dateien :-(

      Die Dateien, die ich beim Umzug der Seite in das "/files"-Verzeichnis kopiert habe, kann ich mit get holen und die Größe bestimmen. Wenn ich nun aber eine neue Datei mit "do action=all" hochlade, wird diese angelegt, ist in der DB auch ganz normal vorhanden, nur mit get kann ich sie nicht holen.

      Um dies zu verdeutlichen habe ich folgendes Test-Script geschrieben:

      <perl>
      
      use LWP::Simple ();
      my @dateien= ("Masters2005Wiste.jpg","WorldMastersGames_kl.jpg", "bezirk.jpg");

      foreach(@dateien) {
      my $datei = "http://www.lsn-lueneburg.de$_files/$_";
      $x = LWP::Simple::get ($datei);
      out "$datei, Größe: ".length($x)."<br>";
      }
      </perl>
      

      Auszuführen unter
      http://www.lsn-lueneburg.de/cgi-bin/baseportal.pl?htx=/ha/test

      Wie Ihr seht, kann die Dateigröße der letzten Datei nicht ermittelt werden. Wenn Ihr die URL der Datei mit dem Browser aufruft, werdet Ihr sehen, dass diese Datei durchaus existent ist. Da ich die Funktion über eine Schleife aufrufe, scheiden auch Schreibfehler aus.

      Die ersten beiden Daiteien stammen aus dem Umzug und die dritte habe ich neu angelegt.

      Ich habe mir mit einem FTP-Programm mir das Verzeichnis angesehen: Eigentümer und Gruppe sind bei allen identisch, lediglich die Rechte sind bei den alten Dateien 755 und bei der neuen 644.

      Wenn ich die neue Datei manuell auf 755 setze ändert das aber nix.

      Hat jemand eine Idee, warum ich mir die neuen Dateien mit get nicht holen kann?


      Marco

     Antworten

    Beitrag von Martin Schobert (18 Beiträge) am Dienstag, 18.April.2006, 12:01.
    Re: Ich verzweifle gerade -> Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Hallo,

        ich vermute mal das das ein Copy'n'Paste-Fehler ist:
      

      my $datei = "http://www.lsn-lueneburg.de$_files/$_";

      Statt dem ersten $_ sollte natuerlich ein '/' stehen. In der Ausgabe des verlinkten Skriptes stimmt das ja.

      Ein Nachteil der Methode get ist, dass die Fehlerursache nicht klar erkennbar ist. Sie liefert undef, wenn etwas nicht klappte. So steht es auch in der Doku unter http://search.cpan.org/dist/libwww-perl/lib/LWP/Simple.pm . Das erklaert vll. auch die behauptete Dateigroesse von 0.

      Vielleicht liefert ein kurzer Test mit der Methode head() weitere Anhaltspunkte zur Fehleranalyse?

      Was sagen access-/error-log des Webserver aus lsn-lueneburg.de?

     Antworten

    Beitrag von Marco (840 Beiträge) am Dienstag, 18.April.2006, 13:25.
    Re: Ich verzweifle gerade -> Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Hallo Herr Schobert,


      nein, das Script war schon richtig so. In der bp-Variable "$_files" steht halt "/files", daher die ungewöhnliche Optik.

      Leider habe ich aus meinem Büro keinen Zurgiff auf die Log-Files, bin aber trotzdem (hoffentlich) einen kleinen Schritt weiter.

      Mit dem head()-Befehl hat es leider nicht geklappt, der wirft auch keine Fehlermeldung, aber der mirror()-Befehl gibt den HTTP-Response-Code zurück.

      ich habe daher jetzt die Zeilen

      $z = LWP::Simple::mirror ($datei,null);
      out "HTTP-Returncode mirror($datei,null): $z<br>";
      

      eingefügt und die Datei sozusagen nach "null" gespiegelt. Der HTTP-Returncode der Seite, die get nicht findet ist 404, im Erfolgsfall ist der Code 304 (not modified).

      Bevor ich heute Abend einen Blick in die Log-Files werfe, haben Sie spontan noch eine Idee?

      Mit einem Browser ist die Datei problemlos aufrufbar! Kann es ggf. an meinen Webserver-Einstellungen liegen?


      mfg

      Marco

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Dienstag, 18.April.2006, 14:20.
    Re: Ich verzweifle gerade -> Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Darf ich mal anmerken:
      Wenn du eine Lizenz hast, und die Dateien auf dem selben Server liegen dann ist das völlig über. Greif dann nicht über http auf die Dateien zu sondern einfach direkt:
      http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm
      http://de.selfhtml.org/perl/funktionen/einausgabe.htm


      >Mit einem Browser ist die Datei problemlos aufrufbar! Kann es ggf. an meinen Webserver-Einstellungen liegen?
      

      Manche Serverkonfigurationen versuchen über einschränkungen des User Agent, Scripte den Zugriff zu verwähren. (Paranoia config meiner meinung nach) Aber du sagst ja es klappt mit manchen dateien, deshalb ist das wohl eher unwarscheinlich

      >"$_files/$_put{datei}";
      

      Ist definitiv falsch (sofern du nicht das 2.Baseportal Gebot gebrochen hast:"Benutze nie variablen mit _ für eingene Sachen" Denn in $_files steht normalerweise der locale systempath des files verzeichnisses. z.B "/home/user/htdocs/public/files" oder so. Und der hat bei der abfrage über http mal garnichts zu suchen.

     Antworten

    Beitrag von Marco (840 Beiträge) am Mittwoch, 19.April.2006, 08:35.
    Re: Ich verzweifle gerade -> Re: Nochmal Lizenz: get ($URL) klappt nicht mehr...

      Hallo Pouraga,


      danke für den Hinweis, es klappt mit stat();
      ...ich muß mich erst an die neue Lizenz-Freiheit gewöhnen ;-)

      Ein wenig ungut bleibt das Gefühl doch, weil die anderer Variante auch hätte klappen müssen... hoffentlich holt mich das nicht später irgendwann einmal an anderer Stelle ein :-(

      Noch ein Hinweis zu "$_files": Der Inhalt der Variable ist lediglich "/files". Wieso soll ich diese globale Variable nicht benutzen? Ich habe beim Umstieg von Miete auf Lizenz gemerkt, dass ich viel zu wenig mit Variablen gearbeitet habe... Ich verändere "$_files" ja nicht, sondern benutze lediglich Ihren Inhalt. Normalerweise sollte "$_files" keine Variable sein, sondern eine Konstante, aber die gibt es ja in perl leider nicht.

      mfg

      Marco

     Antworten


     
 Liste der Einträge von 18901 bis 19051:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!