Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei download -> speichern schlägt fehl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei download -> speichern schlägt fehl

    Hi,

    ich beabsichte eine Datei via PHP für ein Update zu downloaden,( und entpacken) und hatte curl verwendet um dies zu relisieren. Über einen anderen Testserver von mir gehts.
    Möchte ich dann den richtigen nutzen klappts nicht.
    Nun habe ich auch gelesen, dass curl Anfragen auch blockiert werden können.

    Oder gibt es auch andere Möglichkeiten als curl?

    Den Code verwende ich:
    PHP-Code:
     $ch curl_init("http://www.mysite.com/downloads/update.zip"); /* initialize curl handle */
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue); /* allow redirects */
    curl_setopt($chCURLOPT_RETURNTRANSFER,true);  /* return into a variable */
     
    curl_setopt($chCURLOPT_FILE$zieldatei);
    $zieldatei fopen("update.zip""w");
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_TIMEOUT3600);
     
    curl_exec($ch);
       
    $aCURLinfo curl_getInfo$ch );
              
    $sAverageSpeedDownload curl_getInfo$chCURLINFO_SPEED_DOWNLOAD );
          echo 
    '<pre>';
      echo 
    'Average speed download == ' $sAverageSpeedDownload '<br>';
         echo 
    '<br>';
          
    $aCURLinfo curl_getInfo$ch );
        
    print_r$aCURLinfo );
          echo 
    '</pre>';
     
    fclose($zieldatei); 

    In der PHP Programmierung bin ich nicht ganz so sattelfest. Kann auch sein, dass mir ein Fehler passiert ist.

    Danke für eure Ideen und Hilfen schonmal.

  • #2
    Grenze mal den Fehler ein, was genau schlägt fehl (curl_aufruf, oder sendet der andere Server einen Fehler)?

    Mir kommt die Time Out-Zeile verdächitg vor, darf PHP überhaupt eine Stunde lang laufen?

    Hast du error_reporting auf E_ALL?
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      Hi, habe ich nicht eingebaut.

      Kommentar


      • #4
        Dan mach es doch mal...

        Kommentar


        • #5
          Na damit habe ich wohl Pech. K.a. was mein Hoster da für Gründ sieht die display_errors, display_startup_errors auf Off zu setzen also funktionierte
          PHP-Code:
           error_reporting (E_ALL); 
          leider nicht

          EDIT:
          Wenns unüblich ist dies aus welchen Gründen auch immer auszuschalten, würde es sich lohnen den Hoster deswegen zu kontaktieren?

          Kommentar


          • #6
            Datei download -&gt; speichern schlägt fehl

            In Produktivumgebungen ist es üblich, Fehlermeldungen nicht anzuzeigen sondern nur zu loggen. Display_errors ist jedoch eine Direktive, die du mit ini_set() überschreiben kannst.
            [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

            Kommentar


            • #7
              Danke habs mir gerade gegoogelt wie geht und dies eingebracht:

              PHP-Code:
               ini_set('display_errors''1');
               
              error_reporting(E_ALL E_STRICT); 
              Ergebnis: Warning: curl_setopt(): supplied argument is not a valid File-Handle resource in /web/7/000/010/013/35784/htdocs/folder/vault/update.php on line 38

              Zeile 38 ist diese:
              PHP-Code:
              curl_setopt($chCURLOPT_FILE$zieldatei); 
              Was ist da unzulässig?

              Kommentar


              • #8
                Anzunehmender Weise ist $zieldatei ein String und keine StreamResource!
                Zumindest in dem Moment, denn fopen() verwendest Du erst danach...
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Was muss ich dann ändern? ( bin noch nicht so fit in php )

                  Kommentar


                  • #10
                    Na komm schon, das muß man doch nicht vorkauen! Was denkst Du musst Du hier ändern?
                    PHP-Code:
                    curl_setopt($chCURLOPT_FILE$zieldatei);
                    $zieldatei fopen("update.zip""w"); 
                    kleiner Tipp: Du kannst ein Bild erst dann aufhängen, wenn es gemalt ist!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Ah ok, ich habe es umgedreht und es gab keine Fehler mehr.
                      PHP-Code:
                      $zieldatei fopen("update.zip""w");
                       
                      curl_setopt($chCURLOPT_FILE$zieldatei); 

                      Nur jetzt habe ich das Problem, dass die Datei, welche etwa 1MB sein müsste 77 Bytes hat.
                      Sprich irgendwas dennoch noch nicht ganz ok ist.

                      Kommentar


                      • #12
                        .zip mit fopen
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Müsste das dann in der Art erfolgen?
                          PHP-Code:
                          <?php
                          $zip 
                          = new ZipArchive;
                          $res $zip->open('test.zip');
                          if (
                          $res === TRUE) {
                              echo 
                          'ok';
                              
                          $zip->extractTo('test');
                              
                          $zip->close();
                          } else {
                              echo 
                          'failed, code:' $res;
                          }
                          ?>
                          Habe es hier auf der Seite so gesehen: http://php.net/manual/en/ziparchive.open.php

                          Kommentar


                          • #14
                            Bin mir jetzt nicht sicher, ob ZipArchive :: open eine für CURLOPT_FILE gültige StreamResource zur Verfügung stellt.
                            Das müsstest Du dann testen...
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Hm,... habe es nochmal umgestrickt.....

                              Ich fand ein Thema wo wer anders auch hatte.
                              PHP-Code:
                              set_time_limit(0); /*prevent timeout*/
                               
                              $ch2=curl_init("http://www.mysite.com/downloads/update.zip");
                              $file2 fopen('update.zip','w+');
                              curl_setopt($ch2CURLOPT_FILE$file2); //auto write to file

                              curl_setopt($ch2CURLOPT_TIMEOUT5040);
                              curl_setopt($ch2CURLOPT_POST1);
                              curl_exec($ch2);
                              curl_setopt($ch2CURLOPT_FOLLOWLOCATIONtrue);
                              curl_setopt($ch2CURLOPT_RETURNTRANSFERtrue);

                              if(
                              curl_exec($ch2) === false)
                              {
                                  echo 
                              'Curl error: ' curl_error($ch2);
                              }
                              else
                              {echo 
                              '<br>';
                                  echo 
                              'CURL : Operation completed without any errors';
                                  echo 
                              '<br>';
                              }

                              // Close handle


                              curl_close($ch2);

                              fclose($file2); 
                              Wars aber auch nicht. wget scheint auf dem Server leider nicht zur Verfügung zu stehen.
                              hatte die Fehlerausgabe von curl eingebracht. Bringt aber auch keine Fehler.
                              Laut curl ist alles tutti,- Dateigröße dennoch nur 77 Byte.

                              Kommentar

                              Lädt...
                              X