Ankündigung

Einklappen
Keine Ankündigung bisher.

mime_content_type liefert falschen Type bei SVG-Dateien

Einklappen

Neue Werbung 2019

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

  • mime_content_type liefert falschen Type bei SVG-Dateien

    Hallo zusammen,

    ich habe ein merkwürdiges Problem mit der Funktion mime_content_type. Und zwar erhalte ich bei SVG-Dateien den falschen Mimetype (image/svg anstatt image/svg+xml).
    Interessanterweise handelt es sich bei diesem Mimetype auch nicht um einen gültigen Typ, siehe https://developer.mozilla.org/en-US/..._of_MIME_types .

    Mit finfo_file erhalte ich genau den gleichen, falschen Mimetype. Getestet mit der folgenden Datei: https://framework.zend.com/img/zend-framework-logo.svg


    Momentan fehlt mir die Kreativität, woran es liegen könnte...


    PHP 7.2.5-0ubuntu0.18.04.1 (cli) (built: May 9 2018 17:21:02) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.5-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

    Grüße
    michga93

  • #2
    Vermute du hast da einen kleinen Bug gefunden. get_headers() liefert dagegen den korrekten Wert.

    PHP-Code:
    $url "https://framework.zend.com/img/zend-framework-logo.svg";
    $headers get_headers($url);
    debug::write($headers);
    /*
    array (
      0 => "HTTP/1.1 200 OK",
      1 => "Accept-Ranges: bytes",
      2 => "Content-Type: image/svg+xml",
      3 => "Date: Thu, 28 Jun 2018 17:41:55 GMT",
      4 => "ETag: "5b19381c-cd1"",
      5 => "Last-Modified: Thu, 07 Jun 2018 13:50:20 GMT",
      6 => "Server: nginx/1.10.3 (Ubuntu)",
      7 => "Content-Length: 3281",
      8 => "Connection: Close",
    )
    */ 

    Kommentar


    • #3
      Es liegt daran dass dieser Mimetype bei der IANA nicht registriert ist, also keine Norm existiert.
      Siehe https://www.iana.org/assignments/med...ia-types.xhtml

      Kommentar


      • #4
        jspit

        Genau, nginx setzt hierbei den Content-Type korrekt. Selbiges konnte ich in meiner Dev-Umgebung feststellen.

        protestix

        Das könnte es vielleicht erklären. Allerdings verwirrt mich etwas: Und zwar erhalte ich mit dem Befehl mimetype -M zf-logo-mark.svg in der Bash den korrekten Mimetype image/svg+xml.
        Sowohl in der Datei /etc/nginx/mime.types (in meinem Fall irrelevant) als auch in der globalen /etc/mime.types ist der korrekte Mimetype hinterlegt.

        Ich habe also noch immer keine Ahnung, woher PHP den Mimetype image/svg herholt ...

        Kommentar


        • #5
          Apache docu:
          https://www.w3.org/services/svg-server/
          und bei mit kommt:
          "text/html"
          /etc/mime

          Kommentar


          • #6
            Zitat von michga93 Beitrag anzeigen
            jspit
            Ich habe also noch immer keine Ahnung, woher PHP den Mimetype image/svg herholt ...
            bei Funktionen wie mime_content_type() wird ja die Grafikdatei untersucht und da dort der Mimetyp nicht verankert ist, wird dieser von PHP gesetzt. Steht also vermutlich irgendwo fix im Quellcode.
            Bei get_headers() wird ja nur das wiedergegeben was der Server bei der Übertragung setzt, und wenn der es richtig macht wird dies auch richtig gezeigt..


            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen
              Es liegt daran dass dieser Mimetype bei der IANA nicht registriert ist, also keine Norm existiert.
              Siehe https://www.iana.org/assignments/med...ia-types.xhtml
              Daran hat es schlussendlich auch gelegen. Ich habe parallel zu diesem Thread einen PHP-Bugreport geschrieben, in deren Kommentaren auch die vollständige Erklärung zu finden ist: https://bugs.php.net/bug.php?id=76543

              Kommentar


              • #8
                Ich weiß nicht, ob ich das als Bug bezeichnen würde, wenn der erwartete MimeType nicht standardisiert ist?
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Mich hat es einfach nur verwirrt, dass auf sämtlichen Seiten, auch auf der IANA-Seite, vom Mimetype image/svg+xml gesprochen wird und auch die getesteten Commands alle diesen Mimetype returned haben. Da hat image/svg für mich einfach nicht ins Schema gepasst. Zumal das W3C auch den Mimetype image/svg+xml empfiehlt (https://de.wikipedia.org/wiki/Scalable_Vector_Graphics).

                  Den Bugreport habe ich verlinkt, da dort in den Kommentaren näher auf das Problem eingegangen wird

                  Kommentar

                  Lädt...
                  X