Leeloo5E: XAMPP-Apache: Dateiübermittlung per PHP

Hallo,

ich habe hier einen XAMPP-Apachen Version 1.6.3 - also relativ aktuell. Dieser läuft mit meiner in PHP geschriebenen Webapplikation eigentlich ganz gut. Bloß an einer Stelle gibts Probleme.

Im meinem Code erstelle ich bisweilen ein paar Dateien in PDF, RTF und auch mal ein ZIP. Diese werden korrekt im Dateisystem des Webservers abgelegt und sind von dort auch ordentlich aufruf- bzw. öffnenbar.

Allerdings möchte ich diese Dateien den Nutzern meiner Webapplikation zur Verfügung stellen. Das passiert im PHP-Code so:

  
 header('Content-type: application/rtf');  
 header("Cache-Control: no-cache, must-revalidate");  
 header("Content-Length: " . filesize($file));  
 header('Content-Disposition: attachment; filename=file.rtf');  
  
 readfile($file);  

Die korrekte Darstellung des PDF konnte ich durch das setzen von output_buffering=4096 herbeiführen. Bei RTF und ZIP jedoch sind beide heruntergeladene Dateitypen immer noch defekt. Das RTF wird zwar mit Word geöffnet, doch dieser verlangt die Angabe einer Zeichenkodierung und wählt vorab UTF-8 aus. Nach Bestätigen, wird der RTF-Code in Word angezeigt, aber nicht die eigentlich interpretierte Version des RTF-Codes, die Word ja eigentlch anzeigen soll. Das ZIP ist dahingehend kaputt, dass es einfach nicht geöffnet werden kann und jedes Archivprogramm meint: kaputt.

Ich vermute mal, dass ich durch einen einfachen kleinen Parameter entweder in der php.ini oder der httpd.conf erreichen kann, dass auch ein RTF oder ZIP korrekt übermittelt wird. Die Frage ist nur WELCHER? Hat jemand eine Idee? Ist das schon jemandem über den Weg gelaufen? Meine lokale Teststellung (OpenSuse+Apache2) hat mit den Dateiformaten überhaupt keine Probleme.

Gruß,
Leeloo

--
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
  1. Hallo,

    Wie ist es wenn du bei Zip Dateien mit endung Zip den Type "application/zip"
    einstellst?
    Dann auch Probleme?

    gruss
    hawk

    1. Hallo,

      Wie ist es wenn du bei Zip Dateien mit endung Zip den Type "application/zip"
      einstellst?
      Dann auch Probleme?

      genau.

      Gruß,
      Leeloo

      --
      "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
      1. Hallo,

        mittlerweile habe ich weitere Nachforschungen angestellt. Die haben ergeben, dass sowohl RTF und auch ZIP in de mime.types eingetragen sind und diese auch aufgerufen wird. Ebenso mit der Datei magic. So das ein "Nicht-Kennen" somit ausgeschlossen werden kann. (Denke ich jedenfalls.)

        Weiterhin ist festzustellen, dass die vom Server erzeugte und korrekte RTF-Datei sich von der per Browser heruntergeladene Datei im Quellcode unterscheidet.
        So befinden sich am Anfang einige nicht identifizierbare quadratische Kästchenzeichen, die wohl am Ende wieder abgeschnitten werden. Das händische korrigieren dieses Fehlers führt jedoch nicht zum gewünschten Erfolg. Das RTF bleibt weiter "kaputt" und wird immer noch nicht korrekt angezeigt.

        Gruß,
        Leeloo

        --
        "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
        1. Hallo,

          der XAMPP nimmts scheinbar zu genau. Doch eigentlich auch nicht immer.
          Denn erst meint er da wären schon andere Header gesendet - in dem Fall text/html. Und nach einer Weile nicht mehr. Nach Update auf Xampp 1.6.6a kam die Meldung wieder und ich find an doch stutzig zu werden, da ich ja schon alles andere mittlerweile ausgeschlossen hatte. Ein einfaches und dazu noch auskommentiertes echo mit enthaltenen HTML-Tags brachte XAMPP dazu zu meinen, die Datei wäre text/html und akzeptierte die anschließenden Header nicht mehr. So dass die übergebenen Dateien nicht immer korrekt übertragen wurden.
          Nachdem ich es dann noch genauer untersuchte, wurden von mir sogar die Dateikodierung auf ANSI oder UTF-8 (ohne BOM - wenn mir das jetzt noch einer erklären kann, denn mit gehts net) gesetzt, klappts sogar mit einem auskommentierten echo "<html>";

          *grmpf* Und um das rauszukriegen, hab ich nun fast den ganzen Tag gebraucht. Verdammt noch mal.

          Gruß,
          Leeloo

          --
          "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra