Rike: Bild von anderer Seite kopieren

Hallo Leute,

kann mir jemand sagen, wie ich ein bestimmtes Bild von einer anderen Seite per PHP auf meinen Server speichern kann?
Hab mal irgendwas von FTP-Befehlen mit PHP gelesen - leider unterstützt mein Provider die nicht. Geht das nicht irgendwie mit dem file() Befehl?

Wer toll, wenn mir jemand helfen könnte ...

Liebe Grüsse :-)

Rike

  1. Hallo,

    schau mal im php-Manual unter "Befehle des Dateisystems"...

    $fp = fopen(quelle,r)
    $daten = fread($fp,anzahl)   anzahl entweder hoch genug,
                                 oder Schleife bauen.
    fclose($fp)

    $fp = fopen(ziel,w)
    $count = fwrite($fp,$daten)
    fclose($fp)

    Und schon ist das File kopiert...

    Grüße

    Tom

    1. hi,

      Und schon ist das File kopiert...

      kleine ergänzung: das öffnen von remote-dateien über http setzt voraus, dass die option allow_url_fopen aktiviert ist.
      bei einem provider, der die ftp-funktionen abgeschaltet hat, evtl. auch nicht aktiviert.
      http://www.php.net/manual/de/ref.filesystem.php#ini.allow-url-fopen

      gruss,
      wahsaga

      1. Hallo Wahsaga,

        kleine ergänzung: das öffnen von remote-dateien über http setzt voraus, dass die option allow_url_fopen aktiviert ist.
        bei einem provider, der die ftp-funktionen abgeschaltet hat, evtl. auch nicht aktiviert.
        http://www.php.net/manual/de/ref.filesystem.php#ini.allow-url-fopen

        hab mal geclickt:

        allow_url_fopen "1"            PHP_INI_ALL
          user_agent NULL                PHP_INI_ALL
          default_socket_timeout "60"    PHP_INI_ALL
          from NULL                      ??
          auto_detect_line_endings "Off" PHP_INI_ALL

        Das hieße dann doch, dass man es auch aus dem Script heraus einschalten kann, bevor man es benutzen will. Es sei denn...

        ini_set() ist generell abgeschaltet, oder?

        Und mit default_socket_timeout müsste sich dann auch ein anderer Thread der letzten Tage erschlagen lassen, wo nach dem Timeout für Zugriffe auf externe Ressourcen gefragt wurde?

        Tom

        1. hi,

          allow_url_fopen "1"            PHP_INI_ALL
          Das hieße dann doch, dass man es auch aus dem Script heraus einschalten kann, bevor man es benutzen will. Es sei denn...
          ini_set() ist generell abgeschaltet, oder?

          ich glaube es gibt noch möglichkeiten, hier zu differenzieren, so dass der provider einzeln entscheiden kann, welche optionen er dich überschreiben lässt, und welche nicht.
          z.b. die maximale scriptlaufzeit wird dich kaum ein provider einfach so überschreiben lassen, andere weniger performance-kritische werte aber schon.

          Und mit default_socket_timeout müsste sich dann auch ein anderer Thread der letzten Tage erschlagen lassen, wo nach dem Timeout für Zugriffe auf externe Ressourcen gefragt wurde?

          bin mir da nicht sicher,
          "Standardtimeout (in Sekunden) für Socket basierte Streams."

          • ist ein include (darum ging es ja glaube ich in dem thread) für php gleichbedeutend mit "socket basierter stream", oder bezieht sich das lediglich auf das arbeiten mit den socket-funktionen von php?

          gruss,
          wahsaga

          1. Hello,

            bin mir da nicht sicher,
            "Standardtimeout (in Sekunden) für Socket basierte Streams."

            • ist ein include (darum ging es ja glaube ich in dem thread) für php gleichbedeutend mit "socket basierter stream", oder bezieht sich das lediglich auf das arbeiten mit den socket-funktionen von php?

            Ich denke, das entscheidet sich erst im Parser. Einen Include vom lokalen Dateisystem wird das nicht berühren. Der bekommt innerhalb von Millisekunden den Garaus, wenn er nicht greift.

            include(), file(), readfile(), fread() ... müssten eigentlich alle davon betroffen sein, da PHP die ganzen Socketoperationen freundlicherweise automatisch ausführt, wenn es sich um eine externe Ressource handelt.

            Wie könnte man das nun ausprobieren? Ich habe doch über diese Timeout-Sace noch recht lange nachgedacht und just in meiner Antwort (nach Tagen) ist mir dann der PC abgeschmiert. Ich hatte aber nicht wirkliche eine Lösung, sondern nur Medizin. Vorher einen PHP-Ping auf die Domain (IP) der Ressource durchführen...

            Grüße

            Tom

    2. Hi,

      erstmal Danke - probiers gleich mal aus ...

      Rike

    3. Hi,

      $fp = fopen(quelle,r)
      $daten = fread($fp,anzahl)   anzahl entweder hoch genug,
                                   oder Schleife bauen.

      anzahl ist das Problem! Wie soll ich das machen mit der Schleife?
      Sie Datei ist ein Bild ...

      Das klappt nicht - Hilfe!!!!

      LG Rike

      1. hi,

        $fp = fopen(quelle,r)
        $daten = fread($fp,anzahl)   anzahl entweder hoch genug,
                                     oder Schleife bauen.

        anzahl ist das Problem! Wie soll ich das machen mit der Schleife?
        Sie Datei ist ein Bild ...

        vergiss die schleife, die ist hier wahrscheinlich nicht erforderlich.
        sieh dir die beispiele im manual an: http://www.php.net/manual/de/function.fread.php

        gruss,
        wahsaga