Indyaner: file_exists für entfernte Server

Nachdem ich grade nach einigem hin und her rausfand dass file_exists nicht auf dem eigenen server läuft überlegte ich wie ich es denn dann machen kann beim freund auf dem server zu chekcne ob eine bestimmte datei vorhanden ist.

Ich stiess auf fopen, komme damit aber nicht ganz klar. Muss dieser "Wrapper" bei MIR oder bei IHM aktiviert sein?

Wieso kann man mit PHP nicht einfach eine Datei anpingen o_O

Wer weiss rat?
Ich will nur mit einer abfrage auf einem entfernten server checken ob die datei vorhanden ist.

Und wie kann man das machen wenn sein server das wrappen nicht frei gegeben hat und er es nicht ändern kann? Ich meine die Datei kann ich ja auch so öffnen wenn ich sie in die URL schreibe, aber über PHP soll es nicht gehen? Das wäre strange.

MFG
Indy

  1. Hi,

    Wieso kann man mit PHP nicht einfach eine Datei anpingen o_O

    weil HTTP keine Dateien kennt. Und bei Ressourcen musst Du für den Zustand "existiert" erst mal eine Definition finden.

    Ich will nur mit einer abfrage auf einem entfernten server checken ob die datei vorhanden ist.

    Mache eine FTP-Verbindung auf.

    Und wie kann man das machen wenn sein server das wrappen nicht frei gegeben hat und er es nicht ändern kann?

    Äh?

    Ich meine die Datei kann ich ja auch so öffnen wenn ich sie in die URL schreibe,

    Nein, kannst Du nicht. Damit forderst Du eine Ressource an, keine Datei.

    aber über PHP soll es nicht gehen? Das wäre strange.

    Über PHP kannst Du via HTTP ebenfalls Ressourcen anfordern. Für Dateien musst Du ein günstiges Protokoll wählen, welches etwas derartiges kennt, also z.B. FTP.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Mhh....

      MAchen wir es kurz:
      BEim Freund hat einiges an Dateien auf seinem server die er Nummerisch dort ligen hat (4000.jpg bis 4160.jpg).

      Ich möchte jetzt mit meinem script die dateien von ihm zu mir transferieren.

      Wenn ich jedoch fopen benutze kommen (erklärterweise) viele fehler.
      Wenn ich direkt versuche copy() zu benutzen kommen auch ca. 10 Feler dann bricht er ab.

      FTP fällt flach da er in Urlaub ist und er mir bestimmt auch nicht seine FTP-Account dafür geben wird. Der ist da sehr eigen.
      Er meinte ich solle sie mir ziehen. Aber alle einzeln das ist kacke. Daher will ich das script bauen.

      Kann ich nicht einfach sagen dass PHP die fehler ignorieren soll so dass wenn ein fehler kommt die datei nicht da ist? Weil die dateien nicht durchgehend nummerisch sind sondenr mal 3-5 zwichendurch in der reihe fehlen.

      Beispiescript irgendwo?

      ciao

      1. Dann wäre es natürlich richtig klasse =)

        ciao

        1. Hallo Indyaner

          aller Voraussicht nach werden die Bilder sicher irgendwo auf einem Dokument referenziert sein. Du brauchst also nur einen HTML-Parser, der Dir die Verweise rauskramt, zu bauen.

          Gruß aus Berlin!
          eddi

        2. Hallo,

          wie wäre es denn mit 'wget'?
          Wenn du kein Linux installiert hast, dann geht das immer noch mit Knoppix.

          cu,
          ziegenmelker

      2. Hi,

        MAchen wir es kurz:

        okay.

        BEim Freund hat einiges an Dateien auf seinem server

        Per HTTP gibt es exakt _null_ Dateien. Keine einzige. Und das ist eine vollständige, internetweite Zählung.

        Wenn ich jedoch fopen benutze kommen (erklärterweise) viele fehler.
        Wenn ich direkt versuche copy() zu benutzen kommen auch ca. 10 Feler dann bricht er ab.

        Das sind Datei-Operationen. Datei-Operationen erfordern Dateien. In HTTP existieren keine Dateien. Verzeichnisse sind auch Dateien.

        Kann ich nicht einfach sagen dass PHP die fehler ignorieren soll so dass wenn ein fehler kommt die datei nicht da ist?

        Definiere "Fehler" und implementiere den Code entsprechend.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 你好 Cheatah,

          BEim Freund hat einiges an Dateien auf seinem server

          Per HTTP gibt es exakt _null_ Dateien. Keine einzige. Und das ist eine
          vollständige, internetweite Zählung.

          Statt einer solchen Pauschal-Aussage haette hier besser eine Erklaerung
          stehen koennen.

          Wenn ich jedoch fopen benutze kommen (erklärterweise) viele fehler.
          Wenn ich direkt versuche copy() zu benutzen kommen auch ca. 10 Feler
          dann bricht er ab.

          Das sind Datei-Operationen. Datei-Operationen erfordern Dateien.

          http://de2.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen
          http://de2.php.net/manual/en/features.remote-files.php

          Du pauschalisierst, mal wieder, viel zu sehr und erzaehlst dabei Quatsch.
          Eine Funktion mit namen fopen() muss nicht zwingend eine Dateioperation
          sein, wie PHP vormacht.

          In HTTP existieren keine Dateien. Verzeichnisse sind auch Dateien.

          Letzteres muss nicht bei allen Dateisystemen so gehandelt werden. Eine
          derartige Aussage ist viel zu pauschal um allgemeingueltig sein zu koennen.
          Warum gibst du dir bei deinen Antworten nicht ein wenig Muehe, warum
          rotzt du so einen Mist dahin?

          再见,
          CK

          --
          Die Summe zweier gerade Primzahlen ist immer eine Quadratzahl.
      3. Hallo,

        meld dich mal bei Georg (gd@xlimit.de). Der hat soweit ich weiß mal
        ein Script geproggt der TGP-Seiten komplett ausliesst (inkl. Bilder download direkt per Server). Der hat vielleicht den Code den du brauchst.

        Gruss
        Peter

      4. Hallo,

        MAchen wir es kurz:
        BEim Freund hat einiges an Dateien auf seinem server die er Nummerisch dort ligen hat (4000.jpg bis 4160.jpg).

        Brauchst du das ganze nur einmalig?

        Wenn ja, dann Folgefrage:
        Du weißt genau wo die Dateien (jaja, Ressourcen) liegen und wie sie
        heißen?

        Dann kannst du sie nämlich einfach alle mit einem Downloadmanger
        herunterladen. Schreibe dir hierfür ein Mini-Programm, das dir eine
        HTML-Datei erzeugt, die sämtliche URLs als Links enthält.
        (Arbeitsaufwand: 5 Minuten -- höchstens.)

        Dann installierst du dir einen Downloadmanager deiner Wahl (z.B.
        FlashGet oder NetTransport), danach öffnest du die vorher generierte
        HTML-Datei, selektierst alle Links (Strg+A) und ziehst diese per
        Drag&Drop in den Downloadmanager. Der lädt die dann schön brav alle runter,
        ohne daß du auch nur den Finger krümmen müßtest.

        Gruß
        Slyh

        1. Hallo,

          Dann kannst du sie nämlich einfach alle mit einem Downloadmanger
          herunterladen. Schreibe dir hierfür ein Mini-Programm,

          auch du hast noch nichts von 'wget' gehört. Das gibt es sogar für Windows: http://www.interlog.com/~tcharron/wgetwin.html

          cu,
          ziegenmelker

  2. Hallo,

    Ich stiess auf fopen, komme damit aber nicht ganz klar. Muss dieser "Wrapper" bei MIR oder bei IHM aktiviert sein?

    In diesem Fall bei dir.
    Grundsätzlich bei dem Server, auf dem das Script ausgeführt wird.

    Wieso kann man mit PHP nicht einfach eine Datei anpingen o_O

    Weil ein PING auf einer ganz anderen Protokoll-Ebene abläuft als z.B. HTTP. Mit PING kannst du zwar die Verbindung zu einem Host überprüfen, nicht aber die Existenz einer Datei oder Ressource.

    Ich will nur mit einer abfrage auf einem entfernten server checken ob die datei vorhanden ist.

    Wenn ich deine Folgepostings richtig verstanden habe, willst du eine längere Folge von Dateien übertragen, die aber nicht lückenlos numeriert sind.
    Wie wär's einfach mit einem Download-Manager?

    Und wie kann man das machen wenn sein server das wrappen nicht frei gegeben hat und er es nicht ändern kann?

    Das spielt keine Rolle. Wenn das Script auf deinem Server läuft, muss dort der fopen-Wrapper aktiv sein. Der andere Server, von dem du die Daten ziehst, spielt dabei keine Rolle - er beantwortet nur deine HTTP-Requests.

    So long,

    Martin

  3. Moin!

    Nachdem ich grade nach einigem hin und her rausfand dass file_exists nicht auf dem eigenen server läuft

    Wie hast du das denn rausgefunden? Ich meine, bevor du irgendwelche komplizierten Lösungen baust, die den Unsicherheitsfaktor erhöhen, solltest du vielleicht doch versuchen, dein eigentliches Problem zu lösen. file_exists() ist bei PHP jedenfalls eine Kernfunktion, die immer zur Verfügung steht (andernfalls würde es eine entsprechende Fehlermeldung "undefined function" geben).

    Also mal Butter bei die Fische: Welchen Code hast du benutzt um was zu erreichen? Und was ist stattdessen passiert?

    • Sven Rautenberg