Prolli: file() funktioniert nicht

Hallo zusammen,
ich möchte mit der Funktion file() über http auf einen File zugreifen
$datei = file("http://www.badenpage.de/gengenbach/rebstock/start_rebstock.html");

Leider bekomme ich immer folgende Fehlermeldung:

Warning: file(): php_network_getaddresses: gethostbyname failed in E:\inetpub\wwwroot\permanent\ticker\montag3.php on line 20

Warning: file(http://www.badenpage.de/gengenbach/rebstock/start_rebstock.html): failed to open stream: No such file or directory in E:\inetpub\wwwroot\permanent\ticker\montag3.php on line 20

Nutze ich file() zum Aufruf einer Datei über http auf unserem internen Server, funktioniert das problemlos?

An was kann das liegen?

Danke
Prolli

  1. Hi,

    An was kann das liegen?

    Daran dass man eigentlich nicht file() benutzt.
    Das dürfte dir weiterhelfen.

    Gruß
    Felix

    --
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
    René Descartes

    1. Moin!

      An was kann das liegen?
      Daran dass man eigentlich nicht file() benutzt.

      Warum nicht?

      Das dürfte dir weiterhelfen.

      Das ist was anderes, holt insbesondere nicht die Seiteninhalte!

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Hi,

        An was kann das liegen?
        Daran dass man eigentlich nicht file() benutzt.
        Warum nicht?

        Dachte ich zumindest immer dass es sauberer ist fsockopen() zu verwenden.

        Das dürfte dir weiterhelfen.
        Das ist was anderes, holt insbesondere nicht die Seiteninhalte!

        Ok, ich hätte mich präziser ausdrücken sollen. Mit den Funktionen fopen() und fsockopen(), die hier vorgestellt werden (ich gebe zu der Link ist nicht optimal), kann man auf Seiteninhalte entfernter Server zugreifen.

        Gruß

        --
        Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
        René Descartes
        1. Moin!

          Daran dass man eigentlich nicht file() benutzt.
          Warum nicht?
          Dachte ich zumindest immer dass es sauberer ist fsockopen() zu verwenden.

          Es ist zumindest mal erheblich komplizierter! Oder kannst du fehlerfrei HTTP/1.1 sprechen - inklusive aller Spezialitäten wie "chunked"?

          Das dürfte dir weiterhelfen.
          Das ist was anderes, holt insbesondere nicht die Seiteninhalte!
          Ok, ich hätte mich präziser ausdrücken sollen. Mit den Funktionen fopen() und fsockopen(), die hier vorgestellt werden (ich gebe zu der Link ist nicht optimal), kann man auf Seiteninhalte entfernter Server zugreifen.

          Kann man - wenn man nochmal ganz viel Energie in eine korrekte HTTP/1.1- oder zumindest HTTP/1.0-Implementierung von GET steckt, die man auch deutlich einfacher haben könnte, wenn man einfach die url_fopen_wrapper von PHP benutzen würde, weil da der ganze LowLevel-Krams schon funktionierend implementiert ist.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
        2. hi,

          Das ist was anderes, holt insbesondere nicht die Seiteninhalte!
          Ok, ich hätte mich präziser ausdrücken sollen. Mit den Funktionen fopen() und fsockopen(), die hier vorgestellt werden (ich gebe zu der Link ist nicht optimal), kann man auf Seiteninhalte entfernter Server zugreifen.

          Das würde aber im konkreten Falle auch keinen großen Unterschied machen - wenn nicht ermittelt werden kann, unter welcher IP der entfernet Server zu erreichen ist, nützt das nix.
          (Wenn die IP bekannt wäre, und es sich um einen Virtuellen Host o.ä. handelt, könnte man natürlich über HTTP/1.1 den Hostnamen mitgeben. Aber das wird dann wieder unflexibel bzw. bedeutet Wartungsaufwand, wenn die entferne Domain mal umziehen sollte.)

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hi,
        das Rätsel ist gelöst, weshalb file() nicht funktioniert.
        Ich sitze hinter einer Firewall und die lässt keine HTTP Verbindungen ins Internet zu.

        Also habe ich jetzt das nächste Problem (oder auf Neudeutsch, die nächste Herausforderung) vor mir.

        Wie überwinde ich die Firewall?

        Unter http://www.php.net/manual/de/function.fopen.php habe ich etwas zum Thema gefunden und auch schon ein paar Skripte kopiert und ausprobiert. Leider ohne Erfolg. Vielleicht liegts auch daran, dass ich nicht wirklich verstehe was die Skripte machen.

        Hat vielleicht jemand einen Tipp für mich?

        Danke
        Prolli

        1. Moin!

          das Rätsel ist gelöst, weshalb file() nicht funktioniert.
          Ich sitze hinter einer Firewall und die lässt keine HTTP Verbindungen ins Internet zu.

          Also habe ich jetzt das nächste Problem (oder auf Neudeutsch, die nächste Herausforderung) vor mir.

          Wie überwinde ich die Firewall?

          Rede mit dem Admin, dass er dir einen Durchlass baut.

          Anders kriegst du keinerlei HTTP-Datenverkehr durch die Firewall (zumindest nicht, wenn sie korrekt funktioniert - und Lücken ausnutzen, ohne dem Firewalladmin Bescheid zu sagen, kann dich deinen Job kosten).

          Unter http://www.php.net/manual/de/function.fopen.php habe ich etwas zum Thema gefunden und auch schon ein paar Skripte kopiert und ausprobiert. Leider ohne Erfolg. Vielleicht liegts auch daran, dass ich nicht wirklich verstehe was die Skripte machen.

          fopen bringt dir nichts, das macht im Grunde dasselbe, wie file(). fsockopen() übrigens auch.

          Aber irgendwie wirst du ja doch ins Internet kommen, sonst könntest du ja hier nicht posten. Genau den Weg mußt du ausfindig machen und nutzen. Oder ist das etwa nach Feierabend gepostet?

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Aber irgendwie wirst du ja doch ins Internet kommen, sonst könntest du ja hier nicht posten. Genau den Weg mußt du ausfindig machen und nutzen. Oder ist das etwa nach Feierabend gepostet?

            Internetzugriff über den Browser ist möglich. Aber der interne Server, auf dem ich PHP ausführe, wurde für HTTP Zugriffe auf das Internet gesperrt.

            -- Prolli

  2. Moin!

    ich möchte mit der Funktion file() über http auf einen File zugreifen
    $datei = file("http://www.badenpage.de/gengenbach/rebstock/start_rebstock.html");

    Leider bekomme ich immer folgende Fehlermeldung:

    Warning: file(): php_network_getaddresses: gethostbyname failed in E:\inetpub\wwwroot\permanent\ticker\montag3.php on line 20

    Übersetzung "Konnte den Namen des Hosts www.badenpage.de nicht in eine IP auflösen".

    Alles andere sind Folgefehler.

    Nutze ich file() zum Aufruf einer Datei über http auf unserem internen Server, funktioniert das problemlos?

    An was kann das liegen?

    Offenbar ist euer internes Netz oder der fragliche Server zumindest temporär nicht in der Lage, ordentliche DNS-Namensauflösung zu machen.

    Korrigiere das, und es sollte gehen.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."