[PHP] Curl Problem

  • Guten Abend Breadfish-Community,


    ich habe grad nen Problem und stehe aufm Schlauch...
    Mein vorhaben ist via Curl aus einer URL eine ZIP Datei herunterzuladen, habe dies versucht via CURL umzusetzen...
    Nun die Datei wird erstellt aber diese ist "beschädigt".
    Habe schon stundenlang im Internet nach meinem Fehler recherchiert aber ohne Erfolg, vielleicht kann mir einer beim Problem helfen :rolleyes::)


    Code:

    PHP
    $init = curl_init();
    curl_setopt($init, CURLOPT_URL, 'http://meinlink.de/test.zip');
    $file = fopen('test.zip', 'w');
    curl_setopt($init, CURLOPT_FILE, $file);
    curl_exec ($init);
    curl_close ($init);
    fclose($file);


    Ich frage mich warum die Datei "beschädigt" ist, zumindest wenn ich diese ZIP Datei öffne sagt mit Winrar: "Das Archiv hat entweder ein unbekanntes Format oder ist beschädigt".
    Oder gibt es eine andere bessere Lösung um eine Datei via PHP zu downloaden und diese sofort in einem bestimmten Ordner zu verschieben?
    Meine Vermutung ist, dass es ein Problem vom herunterladen der ZIP Datei gibt und diese halt nicht richtig weitergegeben wird...


    Hoffe mir kann einer weiterhelfen :whistling:
    Vielen Dank im voraus.


    //Edit:
    Ich hab's anders gelöst ohne CURL. Dennoch falls jemand ein Lösungsvorschlag hat wäre ich sehr dankbar, denn ich finde meinen Fehler nicht.
    Wie ich es jetzt "behoben"/umgegangen bin:


    PHP
    $folder = fopen("test.zip", "w");
    fwrite($folder, file_get_contents("http://meinlink.de/test.zip"));
    fclose($folder);

    Datei wird nun erstellt und der Inhalt ist auch vorhanden sprich nicht mehr beschädigt.
    Dennoch falls jemand ne Lösung bezüglich CURL hätte wäre ich dankbar :)

    • Offizieller Beitrag

    Schonmal so probiert


    PHP
    $ch = curl_init("http://www.meineseite.de/datei.zip");
    $zieldatei = fopen("downloads/datei.zip", "w");
    curl_setopt($ch, CURLOPT_FILE, $zieldatei);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
    curl_exec($ch);
    fclose($zieldatei);


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Schonmal so probiert


    PHP
    $ch = curl_init("http://www.meineseite.de/datei.zip");
    $zieldatei = fopen("downloads/datei.zip", "w");
    curl_setopt($ch, CURLOPT_FILE, $zieldatei);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
    curl_exec($ch);
    fclose($zieldatei);


    Ja habe ich auch, führt aber zum selben Ergebnis das die Datei beschädigt ist.
    Das wundert mich ja, die Datei ist dann beschädigt...


    Hier die test.zip was heruntergeladen wurde, aber die original ZIP Datei ist 10 KB groß...


    screen1.PNG



    Diese Nachricht kommt dann für test.zip.
    screen2.PNG

    • Offizieller Beitrag

    Grade mal nachgelesen


    If you do not specify the 'b' flag when working with binary files, you may experience strange problems with your data, including broken image files and strange problems with [i]\r\n[/i] characters.


    Source: http://php.net/manual/en/function.fopen.php


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN