Thomas Seifert: file_exist mittels ftp

kennt jemand eine efiziente möglichkeit unter php4 die existenz eines verzeichnisses zu überprüfen
meine ideen und warum sie scheitern

a) ftp_chdir() -> liefert true oder false zurück, dummerweise wirft diese funktion zusätzlich noch eine warning aus
b) ftp_rawlist() -> innerhalb dieser funktion scheint irgendein cache prozess stattzufinden, er liefert nicht immer alle inhalte eines verzeichnisses zurück, konnt den fehler aber nicht näher verifizieren
c)ftp_raw() dann CWD dir -> gibts leider erst ab php5

hat jemand weitere ideen?

  1. hi,

    a) ftp_chdir() -> liefert true oder false zurück, dummerweise wirft diese funktion zusätzlich noch eine warning aus

    Lässt sich diese nicht durch @ftp_chdir() unterdrücken?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Lässt sich diese nicht durch @ftp_chdir() unterdrücken?

      danke, die lösung lag so nahe :)

      1. hi,

        Lässt sich diese nicht durch @ftp_chdir() unterdrücken?
        danke, die lösung lag so nahe :)

        Bedenke aber auch, dass ftp_chdir ja u.U. noch aus anderen Gründen schiefgehen und somit false liefern könnte - allein daraus auf die Nichtexistenz eines Remoteverzeichnisses zu schließen, wäre fahrlässig. Da sollte man also eigentlich schon den Fehler abfragen, und schauen was für einer es war.

        Unter den FTP-Funktionen scheint es mir aber keine zu geben, die den letzten dabei aufgetretenen Fehlercode/-text liefern kann - vielleicht hilft $php_errormsg da weiter (obwohl ich nicht weiß, ob das auch Warnings aufnimmt.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. naja ich bin grad eher ernsthaft dabei dran zu denken eigene ftp cocket funktionen zu schreiben

          1. das @ bringt übrigends nix :(

            1. echo $begrüßung;

              das @ bringt übrigends nix :(

              Bist du sicher, dass die Meldung von ftp_chdir kam? Wenn ja, welche Meldung kam denn?
              (Manchmal vergisst man auch das Speichern nach der Änderung und lässt das alte Scrpt laufenn ...)

              echo "$verabschiedung $name";

              1. Bist du sicher, dass die Meldung von ftp_chdir kam? Wenn ja, welche Meldung kam denn?

                WARNING|ftp_chdir(): Failed to change directory. in....

                1. achso ich vergass zu erwähnen das ich komplett alle
                  errormeldungen per script abfange

                  $error_handler = set_error_handler("MyErrorHandler");
                  usw
                  das erklärt wohlmöglich warum @ nicht funktioniert

                  1. echo $begrüßung;

                    achso ich vergass zu erwähnen das ich komplett alle
                    errormeldungen per script abfange

                    $error_handler = set_error_handler("MyErrorHandler");
                    usw
                    das erklärt wohlmöglich warum @ nicht funktioniert

                    Ja, in dem Falle solltest du abfragen, ob die Fehlermeldungen gerade unterdrückt werden sollen:

                    if (error_reporting())
                      // Fehler aufzeichnen
                    else
                      // ignorieren

                    Dein Errorhandler wird auch bei mit @ unterdrückten Fehlern aufgerufen. error_reporting() gibt dann aber ein 0 zurück.

                    echo "$verabschiedung $name";

          2. echo $begrüßung;

            naja ich bin grad eher ernsthaft dabei dran zu denken eigene ftp cocket funktionen zu schreiben

            Das hat sich schon mal jemand gedacht und in PEARs Net_FTP-Paket als Klasse namens Net_FTP_Socket veröffentlicht.

            echo "$verabschiedung $name";