Keine zip-Downloads > 10 MB

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

  • #16
    @alle: Danke für eure Hilfe und Geduld. Mit Hilfe des Tools auf http://web-sniffer.net/ konnte ich jetzt den Fehler rasch finden.

    Es war ein fehlender Schreibzugriff auf eine Counterdatei vor dem eigentlichen Datentransfer, der nicht mit "@" gesichert war. Daher wurde schon Fehlerkram ausgegeben (wenn auch mit HTML-Kommentarklammern < ! -- und -- ! > eingeklammert). Aber dadurch war natürlich der Header im Eimer und das System hat den normalen Standard geschrieben.

    Sorry für die Aufregung. Aber vielleicht hilft's mal jemand anderem. Ich hatte zuvor in den Anleitungen zum Schreiben in diesem Forum gelesen, daß es nicht unbedingt nötig sei, sehr viel Code zu posten, nur das Wesentliche.

    Aber in diesem Falle fehlten wohl noch ein paar Zeilen, die vielleicht den einen oder die andere von euch schon vorher auf mein Problem gestoßen hätten.

    Daher zeige ich gleich doch nochmal meinen kompletten Funktionscode dieser Funktion, damit vielleicht jemand sieht, ob ich dort doch noch was falsch gemacht habe, so daß neue Counter-Dateien nicht gleich die richtigen globalen Schreib- und Lese-Attribute hatten.
    PHP Version 7.0.8-0ubuntu0.16.04.2

    Kommentar


    • #17
      dl.php // Download-Counter

      PHP-Code:
      <?php
      // --------------------------------------------------------------------- //
      // This PHP routine offers a file ($get) for download.
      // Before the download starts, a file counter is (created and) increased.
      // Files can support version numbering with "_xxxx" added to the 
      // file name. This numbering stuff is removed for the counter file.
      //
      // return: -
      //    -
      // --------------------------------------------------------------------- //
      global $File;

      //--------------------------------------------------------//
      //              PLEASE DEFINE THE VARIABLES               //
      //--------------------------------------------------------//
      $counterdir "counters";
      $myhome     "http://www.mydomain.com/files/";
      $ext        ".php";

      //--------------------------------------------------------//
      //             DO NOT EDIT ANYTHING FROM HERE             //
      //--------------------------------------------------------//
      $get $File;

      if (!
      $get)
          
      $get $_GET['File'];
      if (!
      $get)
          
      $get $_POST['File'];


      // downloadable file found
      if (@file_exists($get))
      {
          
      $fsize=@filesize($get);
          
          
      // check if $get is a version-numbered update file:
          
      $counter $get $ext;
          
          
      $underscore = @strrpos($get"_");
          if (
      $underscore)
              if ((
      $here = @eregi("_([0-9]{4})."$get)))
                  
      $counter = @substr($get0$underscore) . @substr($get$underscore+5) . $ext;
          
          
          
      // its counter file found
          
      if (@file_exists("$counterdir/$counter"))
          {
              
      // read download counter
              
      $file = @fopen("$counterdir/$counter","r");
              
      $count = @fread($file100);
              
      // increase counter
              
      $countplus = ($count 1);
              @
      fclose($file);
          }
          else
          {
              
      // init counter
              
      $countplus 1;
          }
          
          
      // write increased counter
          
      $fileb = @fopen("$counterdir/$counter","w");
          @
      fwrite($fileb$countplus100);
          @
      fclose($fileb);
          
          
      // allow new files to be written by everyone
          
      if ($countplus == 1)
              @
      chmod("$counterdir/$counter"0777);
          
          
      $fp = @fopen("$myhome$get","rb");
          if (!
      $fp)
          {
              
      header("HTTP/1.0 404 Not Found");
              exit;
          }
          
          
      header("Content-Type: application/octet-stream");
          
      header("Content-Type: application/x-download");
          
      header("Content-Length: $fsize");
          
      header("Content-Disposition: attachment; filename=\"$get\"");
          
      header("Pragma: no-cache");
          
          while(!@
      feof($fp))
          {
              
      $buff = @fread($fp,32768);
              echo 
      $buff;
          }
          
      fflush($fp);
          @
      fclose($fp);
          exit;
      }
      else
          
      header("HTTP/1.0 404 Not Found");
      ?>
      Kann es sein, daß in der Passage
      PHP-Code:
      // allow new files to be written by everyone
          
      if ($countplus == 1)
              @
      chmod("$counterdir/$counter"0777); 
      ein Denkfehler ist, der bewirkt, daß neue Dateien doch nicht global schreib-/lesbar werden?
      PHP Version 7.0.8-0ubuntu0.16.04.2

      Kommentar


      • #18
        Eine Halb-Antwort: Falls das File schon existiert, würde ich auf jeden Fall ein chmod machen (da es bei Dir kritisch wichtig ist). Dann kannst du dir sogar das chmod für neue Files sparen.....

        vielleicht gerade nach dem $fileb = @fopen("$counterdir/$counter","w"); ?

        halbantwort deswegen, weil ich nicht genau weiss, ob chmod auf ein offenes file wirkt...

        Kommentar

        Lädt...
        X