From e17ff61962927668f06cdbdb327122c3f06108e9 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 24 Jun 2020 17:00:32 +0200 Subject: Switch to mime-db as source of extension => MIME map The Apache MIME type map is not actively maintained anymore, so this switches to jshttp/mime-db, which seems to be the de-facto standard in this area now. This avoid the need to patch in our own MIME types over time. The preference algorithm is based on: https://github.com/jshttp/mime-types/blob/47b62ac45e9b176a2af35532d0eea4968bb9eb6d/index.js#L154 Closes GH-5764. --- sapi/cli/generate_mime_type_map.php | 38 ++++--- sapi/cli/mime_type_map.h | 200 +++++++++++++++++++++++++++++++++--- 2 files changed, 210 insertions(+), 28 deletions(-) (limited to 'sapi/cli') diff --git a/sapi/cli/generate_mime_type_map.php b/sapi/cli/generate_mime_type_map.php index 3899680cf8..ca479d20d1 100755 --- a/sapi/cli/generate_mime_type_map.php +++ b/sapi/cli/generate_mime_type_map.php @@ -3,32 +3,42 @@ // Check if we are being given a mime.types file or if we should use the // default URL. -$source = count($_SERVER['argv']) > 1 ? $_SERVER['argv'][1] : 'https://raw.githubusercontent.com/apache/httpd/trunk/docs/conf/mime.types'; +$source = count($argv) > 1 ? $argv[1] : 'https://cdn.jsdelivr.net/gh/jshttp/mime-db@v1.44.0/db.json'; // See if we can actually load it. -$types = @file($source); -if ($types === false) { +$data = @file_get_contents($source); +if ($data === false) { fprintf(STDERR, "Error: unable to read $source\n"); exit(1); } -// Remove comments and flip into an extensions array. +// Source preference from lowest to highest +$prefs = ['nginx' => 1, 'apache' => 2, 'custom' => 3, 'iana' => 4]; + $extensions = []; -array_walk($types, function ($line) use (&$extensions) { - $line = trim($line); - if ($line && $line[0] != '#') { - $fields = preg_split('/\s+/', $line); - if (count($fields) > 1) { - $mime = array_shift($fields); - foreach ($fields as $extension) { - $extensions[$extension] = $mime; +$types = json_decode($data, true); +foreach ($types as $mime => $info) { + $source = $info['source'] ?? 'custom'; + $pref = $prefs[$source]; + foreach ($info['extensions'] ?? [] as $extension) { + if (isset($extensions[$extension])) { + // Use same preference rules as jshttp/mime-types + [$oldMime, $oldPref] = $extensions[$extension]; + if ($oldMime !== 'application/octet-stream' + && ($oldPref > $pref + || ($oldPref === $pref && substr($oldMime, 0, 12) === 'application/'))) { + continue; } } + + $extensions[$extension] = [$mime, $pref]; } -}); +} + +// Only keep the MIME type. +$extensions = array_map(function($x) { return $x[0]; }, $extensions); $additional_mime_maps = [ - "map" => "application/json", // from commit: a0d62f08ae8cbebc88e5c92e08fca8d0cdc7309d "jsm" => "application/javascript", ]; diff --git a/sapi/cli/mime_type_map.h b/sapi/cli/mime_type_map.h index c5d80aa983..743586e378 100644 --- a/sapi/cli/mime_type_map.h +++ b/sapi/cli/mime_type_map.h @@ -27,10 +27,13 @@ typedef struct php_cli_server_ext_mime_type_pair { static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "123", "application/vnd.lotus-1-2-3" }, + { "1km", "application/vnd.1000minds.decision-model+xml" }, { "3dml", "text/vnd.in3d.3dml" }, { "3ds", "image/x-3ds" }, { "3g2", "video/3gpp2" }, { "3gp", "video/3gpp" }, + { "3gpp", "video/3gpp" }, + { "3mf", "model/3mf" }, { "7z", "application/x-7z-compressed" }, { "aab", "application/x-authorware-bin" }, { "aac", "audio/x-aac" }, @@ -55,10 +58,12 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "ait", "application/vnd.dvb.ait" }, { "ami", "application/vnd.amiga.ami" }, { "apk", "application/vnd.android.package-archive" }, + { "apng", "image/apng" }, { "appcache", "text/cache-manifest" }, { "application", "application/x-ms-application" }, { "apr", "application/vnd.lotus-approach" }, { "arc", "application/x-freearc" }, + { "arj", "application/x-arj" }, { "asc", "application/pgp-signature" }, { "asf", "video/x-ms-asf" }, { "asm", "text/x-asm" }, @@ -67,6 +72,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "atc", "application/vnd.acucorp" }, { "atom", "application/atom+xml" }, { "atomcat", "application/atomcat+xml" }, + { "atomdeleted", "application/atomdeleted+xml" }, { "atomsvc", "application/atomsvc+xml" }, { "atx", "application/vnd.antix.game-component" }, { "au", "audio/basic" }, @@ -74,23 +80,28 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "aw", "application/applixware" }, { "azf", "application/vnd.airzip.filesecure.azf" }, { "azs", "application/vnd.airzip.filesecure.azs" }, + { "azv", "image/vnd.airzip.accelerator.azv" }, { "azw", "application/vnd.amazon.ebook" }, { "bat", "application/x-msdownload" }, { "bcpio", "application/x-bcpio" }, { "bdf", "application/x-font-bdf" }, { "bdm", "application/vnd.syncml.dm+wbxml" }, + { "bdoc", "application/bdoc" }, { "bed", "application/vnd.realvnc.bed" }, { "bh2", "application/vnd.fujitsu.oasysprs" }, { "bin", "application/octet-stream" }, { "blb", "application/x-blorb" }, { "blorb", "application/x-blorb" }, { "bmi", "application/vnd.bmi" }, + { "bmml", "application/vnd.balsamiq.bmml+xml" }, { "bmp", "image/bmp" }, { "book", "application/vnd.framemaker" }, { "box", "application/vnd.previewsystems.box" }, { "boz", "application/x-bzip2" }, { "bpk", "application/octet-stream" }, + { "bsp", "model/vnd.valve.source.compiled-map" }, { "btif", "image/prs.btif" }, + { "buffer", "application/octet-stream" }, { "bz", "application/x-bzip" }, { "bz2", "application/x-bzip2" }, { "c", "text/x-c" }, @@ -112,10 +123,12 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "cbt", "application/x-cbr" }, { "cbz", "application/x-cbr" }, { "cc", "text/x-c" }, + { "cco", "application/x-cocoa" }, { "cct", "application/x-director" }, { "ccxml", "application/ccxml+xml" }, { "cdbcmsg", "application/vnd.contact.cmsg" }, { "cdf", "application/x-netcdf" }, + { "cdfx", "application/cdfx+xml" }, { "cdkey", "application/vnd.mediastation.cdkey" }, { "cdmia", "application/cdmi-capability" }, { "cdmic", "application/cdmi-container" }, @@ -134,6 +147,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "cif", "chemical/x-cif" }, { "cii", "application/vnd.anser-web-certificate-issue-initiation" }, { "cil", "application/vnd.ms-artgalry" }, + { "cjs", "application/node" }, { "cla", "application/vnd.claymore" }, { "class", "application/java-vm" }, { "clkk", "application/vnd.crick.clicker.keyboard" }, @@ -148,6 +162,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "cmp", "application/vnd.yellowriver-custom-menu" }, { "cmx", "image/x-cmx" }, { "cod", "application/vnd.rim.cod" }, + { "coffee", "text/coffeescript" }, { "com", "application/x-msdownload" }, { "conf", "text/plain" }, { "cpio", "application/x-cpio" }, @@ -156,8 +171,10 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "crd", "application/x-mscardfile" }, { "crl", "application/pkix-crl" }, { "crt", "application/x-x509-ca-cert" }, + { "crx", "application/x-chrome-extension" }, { "cryptonote", "application/vnd.rig.cryptonote" }, { "csh", "application/x-csh" }, + { "csl", "application/vnd.citationstyles.style+xml" }, { "csml", "chemical/x-csml" }, { "csp", "application/vnd.commonspace" }, { "css", "text/css" }, @@ -178,6 +195,8 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "dcurl", "text/vnd.curl.dcurl" }, { "dd2", "application/vnd.oma.dd2+xml" }, { "ddd", "application/vnd.fujixerox.ddd" }, + { "ddf", "application/vnd.syncml.dmddf+xml" }, + { "dds", "image/vnd.ms-dds" }, { "deb", "application/x-debian-package" }, { "def", "text/plain" }, { "deploy", "application/octet-stream" }, @@ -187,6 +206,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "dic", "text/x-c" }, { "dir", "application/x-director" }, { "dis", "application/vnd.mobius.dis" }, + { "disposition-notification", "message/disposition-notification" }, { "dist", "application/octet-stream" }, { "distz", "application/octet-stream" }, { "djv", "image/vnd.djvu" }, @@ -205,6 +225,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "dp", "application/vnd.osgi.dp" }, { "dpg", "application/vnd.dpgraph" }, { "dra", "audio/vnd.dra" }, + { "drle", "image/dicom-rle" }, { "dsc", "text/prs.lines.tag" }, { "dssc", "application/dssc+der" }, { "dtb", "application/x-dtbook+xml" }, @@ -214,11 +235,13 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "dump", "application/octet-stream" }, { "dvb", "video/vnd.dvb.file" }, { "dvi", "application/x-dvi" }, + { "dwd", "application/atsc-dwd+xml" }, { "dwf", "model/vnd.dwf" }, { "dwg", "image/vnd.dwg" }, { "dxf", "image/vnd.dxf" }, { "dxp", "application/vnd.spotfire.dxp" }, { "dxr", "application/x-director" }, + { "ear", "application/java-archive" }, { "ecelp4800", "audio/vnd.nuera.ecelp4800" }, { "ecelp7470", "audio/vnd.nuera.ecelp7470" }, { "ecelp9600", "audio/vnd.nuera.ecelp9600" }, @@ -228,14 +251,16 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "efif", "application/vnd.picsel" }, { "ei6", "application/vnd.pg.osasli" }, { "elc", "application/octet-stream" }, - { "emf", "application/x-msmetafile" }, + { "emf", "image/emf" }, { "eml", "message/rfc822" }, { "emma", "application/emma+xml" }, + { "emotionml", "application/emotionml+xml" }, { "emz", "application/x-msmetafile" }, { "eol", "audio/vnd.digital-winds" }, { "eot", "application/vnd.ms-fontobject" }, { "eps", "application/postscript" }, { "epub", "application/epub+zip" }, + { "es", "application/ecmascript" }, { "es3", "application/vnd.eszigno3+xml" }, { "esa", "application/vnd.osgi.subsystem" }, { "esf", "application/vnd.epson.esf" }, @@ -243,8 +268,9 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "etx", "text/x-setext" }, { "eva", "application/x-eva" }, { "evy", "application/x-envoy" }, - { "exe", "application/x-msdownload" }, + { "exe", "application/x-msdos-program" }, { "exi", "application/exi" }, + { "exr", "image/aces" }, { "ext", "application/vnd.novadigm.ext" }, { "ez", "application/andrew-inset" }, { "ez2", "application/vnd.ezpix-album" }, @@ -257,6 +283,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "fcdt", "application/vnd.adobe.formscentral.fcdt" }, { "fcs", "application/vnd.isac.fcs" }, { "fdf", "application/vnd.fdf" }, + { "fdt", "application/fdt+xml" }, { "fe_launch", "application/vnd.denovo.fcselayout-link" }, { "fg5", "application/vnd.fujitsu.oasysgp" }, { "fgd", "application/x-director" }, @@ -266,6 +293,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "fh7", "image/x-freehand" }, { "fhc", "image/x-freehand" }, { "fig", "application/x-xfig" }, + { "fits", "image/fits" }, { "flac", "audio/x-flac" }, { "fli", "video/x-fli" }, { "flo", "application/vnd.micrografx.flo" }, @@ -275,6 +303,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "fly", "text/vnd.fly" }, { "fm", "application/vnd.framemaker" }, { "fnc", "application/vnd.frogans.fnc" }, + { "fo", "application/vnd.software602.filler.form+xml" }, { "for", "text/x-fortran" }, { "fpx", "image/vnd.fpx" }, { "frame", "application/vnd.framemaker" }, @@ -294,13 +323,17 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "gbr", "application/rpki-ghostbusters" }, { "gca", "application/x-gca-compressed" }, { "gdl", "model/vnd.gdl" }, + { "gdoc", "application/vnd.google-apps.document" }, { "geo", "application/vnd.dynageo" }, + { "geojson", "application/geo+json" }, { "gex", "application/vnd.geometry-explorer" }, { "ggb", "application/vnd.geogebra.file" }, { "ggt", "application/vnd.geogebra.tool" }, { "ghf", "application/vnd.groove-help" }, { "gif", "image/gif" }, { "gim", "application/vnd.groove-identity-message" }, + { "glb", "model/gltf-binary" }, + { "gltf", "model/gltf+json" }, { "gml", "application/gml+xml" }, { "gmx", "application/vnd.gmx" }, { "gnumeric", "application/x-gnumeric" }, @@ -314,25 +347,39 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "grv", "application/vnd.groove-injector" }, { "grxml", "application/srgs+xml" }, { "gsf", "application/x-font-ghostscript" }, + { "gsheet", "application/vnd.google-apps.spreadsheet" }, + { "gslides", "application/vnd.google-apps.presentation" }, { "gtar", "application/x-gtar" }, { "gtm", "application/vnd.groove-tool-message" }, { "gtw", "model/vnd.gtw" }, { "gv", "text/vnd.graphviz" }, { "gxf", "application/gxf" }, { "gxt", "application/vnd.geonext" }, + { "gz", "application/gzip" }, { "h", "text/x-c" }, { "h261", "video/h261" }, { "h263", "video/h263" }, { "h264", "video/h264" }, { "hal", "application/vnd.hal+xml" }, { "hbci", "application/vnd.hbci" }, + { "hbs", "text/x-handlebars-template" }, + { "hdd", "application/x-virtualbox-hdd" }, { "hdf", "application/x-hdf" }, + { "heic", "image/heic" }, + { "heics", "image/heic-sequence" }, + { "heif", "image/heif" }, + { "heifs", "image/heif-sequence" }, + { "hej2", "image/hej2k" }, + { "held", "application/atsc-held+xml" }, { "hh", "text/x-c" }, + { "hjson", "application/hjson" }, { "hlp", "application/winhlp" }, { "hpgl", "application/vnd.hp-hpgl" }, { "hpid", "application/vnd.hp-hpid" }, { "hps", "application/vnd.hp-hps" }, { "hqx", "application/mac-binhex40" }, + { "hsj2", "image/hsj2" }, + { "htc", "text/x-component" }, { "htke", "application/vnd.kenameaapp" }, { "htm", "text/html" }, { "html", "text/html" }, @@ -343,7 +390,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "icc", "application/vnd.iccprofile" }, { "ice", "x-conference/x-cooltalk" }, { "icm", "application/vnd.iccprofile" }, - { "ico", "image/x-icon" }, + { "ico", "image/vnd.microsoft.icon" }, { "ics", "text/calendar" }, { "ief", "image/ief" }, { "ifb", "text/calendar" }, @@ -354,9 +401,11 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "igs", "model/iges" }, { "igx", "application/vnd.micrografx.igx" }, { "iif", "application/vnd.shana.informed.interchange" }, + { "img", "application/octet-stream" }, { "imp", "application/vnd.accpac.simply.imp" }, { "ims", "application/vnd.ms-ims" }, { "in", "text/plain" }, + { "ini", "text/plain" }, { "ink", "application/inkml+xml" }, { "inkml", "application/inkml+xml" }, { "install", "application/x-install-instructions" }, @@ -367,28 +416,51 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "irp", "application/vnd.irepository.package+xml" }, { "iso", "application/x-iso9660-image" }, { "itp", "application/vnd.shana.informed.formtemplate" }, + { "its", "application/its+xml" }, { "ivp", "application/vnd.immervision-ivp" }, { "ivu", "application/vnd.immervision-ivu" }, { "jad", "text/vnd.sun.j2me.app-descriptor" }, + { "jade", "text/jade" }, { "jam", "application/vnd.jam" }, { "jar", "application/java-archive" }, + { "jardiff", "application/x-java-archive-diff" }, { "java", "text/x-java-source" }, + { "jhc", "image/jphc" }, { "jisp", "application/vnd.jisp" }, + { "jls", "image/jls" }, { "jlt", "application/vnd.hp-jlyt" }, + { "jng", "image/x-jng" }, { "jnlp", "application/x-java-jnlp-file" }, { "joda", "application/vnd.joost.joda-archive" }, + { "jp2", "image/jp2" }, { "jpe", "image/jpeg" }, { "jpeg", "image/jpeg" }, + { "jpf", "image/jpx" }, { "jpg", "image/jpeg" }, + { "jpg2", "image/jp2" }, { "jpgm", "video/jpm" }, { "jpgv", "video/jpeg" }, - { "jpm", "video/jpm" }, + { "jph", "image/jph" }, + { "jpm", "image/jpm" }, + { "jpx", "image/jpx" }, { "js", "application/javascript" }, { "jsm", "application/javascript" }, { "json", "application/json" }, + { "json5", "application/json5" }, + { "jsonld", "application/ld+json" }, { "jsonml", "application/jsonml+json" }, + { "jsx", "text/jsx" }, + { "jxr", "image/jxr" }, + { "jxra", "image/jxra" }, + { "jxrs", "image/jxrs" }, + { "jxs", "image/jxs" }, + { "jxsc", "image/jxsc" }, + { "jxsi", "image/jxsi" }, + { "jxss", "image/jxss" }, { "kar", "audio/midi" }, { "karbon", "application/vnd.kde.karbon" }, + { "kdbx", "application/x-keepass2" }, + { "keynote", "application/vnd.apple.keynote" }, { "kfo", "application/vnd.kde.kformula" }, { "kia", "application/vnd.kidspiration" }, { "kml", "application/vnd.google-earth.kml+xml" }, @@ -410,17 +482,22 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "lbd", "application/vnd.llamagraphics.life-balance.desktop" }, { "lbe", "application/vnd.llamagraphics.life-balance.exchange+xml" }, { "les", "application/vnd.hhe.lesson-player" }, + { "less", "text/less" }, + { "lgr", "application/lgr+xml" }, { "lha", "application/x-lzh-compressed" }, { "link66", "application/vnd.route66.link66+xml" }, { "list", "text/plain" }, { "list3820", "application/vnd.ibm.modcap" }, { "listafp", "application/vnd.ibm.modcap" }, + { "litcoffee", "text/coffeescript" }, { "lnk", "application/x-ms-shortcut" }, { "log", "text/plain" }, { "lostxml", "application/lost+xml" }, { "lrf", "application/octet-stream" }, { "lrm", "application/vnd.ms-lrm" }, { "ltf", "application/vnd.frogans.ltf" }, + { "lua", "text/x-lua" }, + { "luac", "application/x-lua-bytecode" }, { "lvp", "audio/vnd.lucent.voice" }, { "lwp", "application/vnd.lotus-wordpro" }, { "lzh", "application/x-lzh-compressed" }, @@ -434,15 +511,19 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "m3u", "audio/x-mpegurl" }, { "m3u8", "application/vnd.apple.mpegurl" }, { "m4a", "audio/mp4" }, + { "m4p", "application/mp4" }, { "m4u", "video/vnd.mpegurl" }, { "m4v", "video/x-m4v" }, { "ma", "application/mathematica" }, { "mads", "application/mads+xml" }, + { "maei", "application/mmt-aei+xml" }, { "mag", "application/vnd.ecowin.chart" }, { "maker", "application/vnd.framemaker" }, { "man", "text/troff" }, + { "manifest", "text/cache-manifest" }, { "map", "application/json" }, { "mar", "application/octet-stream" }, + { "markdown", "text/markdown" }, { "mathml", "application/mathml+xml" }, { "mb", "application/mathematica" }, { "mbk", "application/vnd.mobius.mbk" }, @@ -450,8 +531,10 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "mc1", "application/vnd.medcalcdata" }, { "mcd", "application/vnd.mcd" }, { "mcurl", "text/vnd.curl.mcurl" }, + { "md", "text/markdown" }, { "mdb", "application/x-msaccess" }, { "mdi", "image/vnd.ms-modi" }, + { "mdx", "text/mdx" }, { "me", "text/troff" }, { "mesh", "model/mesh" }, { "meta4", "application/metalink4+xml" }, @@ -468,13 +551,16 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "mime", "message/rfc822" }, { "mj2", "video/mj2" }, { "mjp2", "video/mj2" }, + { "mjs", "application/javascript" }, { "mk3d", "video/x-matroska" }, { "mka", "audio/x-matroska" }, + { "mkd", "text/x-markdown" }, { "mks", "video/x-matroska" }, { "mkv", "video/x-matroska" }, { "mlp", "application/vnd.dolby.mlp" }, { "mmd", "application/vnd.chipnuts.karaoke-mmd" }, { "mmf", "application/vnd.smaf" }, + { "mml", "text/mathml" }, { "mmr", "image/vnd.fujixerox.edmics-mmr" }, { "mng", "video/x-mng" }, { "mny", "application/x-msmoney" }, @@ -491,6 +577,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "mp4s", "application/mp4" }, { "mp4v", "video/mp4" }, { "mpc", "application/vnd.mophun.certificate" }, + { "mpd", "application/dash+xml" }, { "mpe", "video/mpeg" }, { "mpeg", "video/mpeg" }, { "mpg", "video/mpeg" }, @@ -510,17 +597,23 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "mseed", "application/vnd.fdsn.mseed" }, { "mseq", "application/vnd.mseq" }, { "msf", "application/vnd.epson.msf" }, + { "msg", "application/vnd.ms-outlook" }, { "msh", "model/mesh" }, { "msi", "application/x-msdownload" }, { "msl", "application/vnd.mobius.msl" }, + { "msm", "application/octet-stream" }, + { "msp", "application/octet-stream" }, { "msty", "application/vnd.muvee.style" }, + { "mtl", "model/mtl" }, { "mts", "model/vnd.mts" }, { "mus", "application/vnd.musician" }, + { "musd", "application/mmt-usd+xml" }, { "musicxml", "application/vnd.recordare.musicxml+xml" }, { "mvb", "application/x-msmediaview" }, { "mwf", "application/vnd.mfer" }, { "mxf", "application/mxf" }, { "mxl", "application/vnd.recordare.musicxml" }, + { "mxmf", "audio/mobile-xmf" }, { "mxml", "application/xv+xml" }, { "mxs", "application/vnd.triscape.mxs" }, { "mxu", "video/vnd.mpegurl" }, @@ -539,15 +632,19 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "nns", "application/vnd.noblenet-sealer" }, { "nnw", "application/vnd.noblenet-web" }, { "npx", "image/vnd.net-fpx" }, + { "nq", "application/n-quads" }, { "nsc", "application/x-conference" }, { "nsf", "application/vnd.lotus-notes" }, + { "nt", "application/n-triples" }, { "ntf", "application/vnd.nitf" }, + { "numbers", "application/vnd.apple.numbers" }, { "nzb", "application/x-nzb" }, { "oa2", "application/vnd.fujitsu.oasys2" }, { "oa3", "application/vnd.fujitsu.oasys3" }, { "oas", "application/vnd.fujitsu.oasys" }, { "obd", "application/x-msbinder" }, - { "obj", "application/x-tgif" }, + { "obgx", "application/vnd.openblox.game+xml" }, + { "obj", "model/obj" }, { "oda", "application/oda" }, { "odb", "application/vnd.oasis.opendocument.database" }, { "odc", "application/vnd.oasis.opendocument.chart" }, @@ -560,6 +657,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "ods", "application/vnd.oasis.opendocument.spreadsheet" }, { "odt", "application/vnd.oasis.opendocument.text" }, { "oga", "audio/ogg" }, + { "ogex", "model/vnd.opengex" }, { "ogg", "audio/ogg" }, { "ogv", "video/ogg" }, { "ogx", "application/ogg" }, @@ -574,6 +672,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "org", "application/vnd.lotus-organizer" }, { "osf", "application/vnd.yamaha.openscoreformat" }, { "osfpvg", "application/vnd.yamaha.openscoreformat.osfpvg+xml" }, + { "osm", "application/vnd.openstreetmap.data+xml" }, { "otc", "application/vnd.oasis.opendocument.chart-template" }, { "otf", "font/otf" }, { "otg", "application/vnd.oasis.opendocument.graphics-template" }, @@ -582,6 +681,9 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "otp", "application/vnd.oasis.opendocument.presentation-template" }, { "ots", "application/vnd.oasis.opendocument.spreadsheet-template" }, { "ott", "application/vnd.oasis.opendocument.text-template" }, + { "ova", "application/x-virtualbox-ova" }, + { "ovf", "application/x-virtualbox-ovf" }, + { "owl", "application/rdf+xml" }, { "oxps", "application/oxps" }, { "oxt", "application/vnd.openofficeorg.extension" }, { "p", "text/x-pascal" }, @@ -593,6 +695,8 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "p7r", "application/x-pkcs7-certreqresp" }, { "p7s", "application/pkcs7-signature" }, { "p8", "application/pkcs8" }, + { "pac", "application/x-ns-proxy-autoconfig" }, + { "pages", "application/vnd.apple.pages" }, { "pas", "text/x-pascal" }, { "paw", "application/vnd.pawaafile" }, { "pbd", "application/vnd.powerbuilder6" }, @@ -603,9 +707,11 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "pclxl", "application/vnd.hp-pclxl" }, { "pct", "image/x-pict" }, { "pcurl", "application/vnd.curl.pcurl" }, - { "pcx", "image/x-pcx" }, + { "pcx", "image/vnd.zbrush.pcx" }, { "pdb", "application/vnd.palm" }, + { "pde", "text/x-processing" }, { "pdf", "application/pdf" }, + { "pem", "application/x-x509-ca-cert" }, { "pfa", "application/x-font-type1" }, { "pfb", "application/x-font-type1" }, { "pfm", "application/x-font-type1" }, @@ -614,14 +720,18 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "pgm", "image/x-portable-graymap" }, { "pgn", "application/x-chess-pgn" }, { "pgp", "application/pgp-encrypted" }, + { "php", "application/x-httpd-php" }, { "pic", "image/x-pict" }, { "pkg", "application/octet-stream" }, { "pki", "application/pkixcmp" }, { "pkipath", "application/pkix-pkipath" }, + { "pkpass", "application/vnd.apple.pkpass" }, + { "pl", "application/x-perl" }, { "plb", "application/vnd.3gpp.pic-bw-large" }, { "plc", "application/vnd.mobius.plc" }, { "plf", "application/vnd.pocketlearn" }, { "pls", "application/pls+xml" }, + { "pm", "application/x-perl" }, { "pml", "application/vnd.ctc-posml" }, { "png", "image/png" }, { "pnm", "image/x-portable-anymap" }, @@ -642,11 +752,13 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "prc", "application/x-mobipocket-ebook" }, { "pre", "application/vnd.lotus-freelance" }, { "prf", "application/pics-rules" }, + { "provx", "application/provenance+xml" }, { "ps", "application/postscript" }, { "psb", "application/vnd.3gpp.pic-bw-small" }, { "psd", "image/vnd.adobe.photoshop" }, { "psf", "application/x-font-linux-psf" }, { "pskcxml", "application/pskc+xml" }, + { "pti", "image/prs.pti" }, { "ptid", "application/vnd.pvi.ptid1" }, { "pub", "application/x-mspublisher" }, { "pvb", "application/vnd.3gpp.pic-bw-var" }, @@ -666,11 +778,14 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "qxt", "application/vnd.quark.quarkxpress" }, { "ra", "audio/x-pn-realaudio" }, { "ram", "audio/x-pn-realaudio" }, + { "raml", "application/raml+yaml" }, + { "rapd", "application/route-apd+xml" }, { "rar", "application/x-rar-compressed" }, { "ras", "image/x-cmu-raster" }, { "rcprofile", "application/vnd.ipunplugged.rcprofile" }, { "rdf", "application/rdf+xml" }, { "rdz", "application/vnd.data-vision.rdz" }, + { "relo", "application/p2p-overlay+xml" }, { "rep", "application/vnd.businessobjects" }, { "res", "application/x-dtbresource+xml" }, { "rgb", "image/x-rgb" }, @@ -686,26 +801,34 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "rms", "application/vnd.jcp.javame.midlet-rms" }, { "rmvb", "application/vnd.rn-realmedia-vbr" }, { "rnc", "application/relax-ng-compact-syntax" }, + { "rng", "application/xml" }, { "roa", "application/rpki-roa" }, { "roff", "text/troff" }, { "rp9", "application/vnd.cloanto.rp9" }, + { "rpm", "application/x-redhat-package-manager" }, { "rpss", "application/vnd.nokia.radio-presets" }, { "rpst", "application/vnd.nokia.radio-preset" }, { "rq", "application/sparql-query" }, { "rs", "application/rls-services+xml" }, + { "rsat", "application/atsc-rsat+xml" }, { "rsd", "application/rsd+xml" }, + { "rsheet", "application/urc-ressheet+xml" }, { "rss", "application/rss+xml" }, { "rtf", "application/rtf" }, { "rtx", "text/richtext" }, + { "run", "application/x-makeself" }, + { "rusd", "application/route-usd+xml" }, { "s", "text/x-asm" }, { "s3m", "audio/s3m" }, { "saf", "application/vnd.yamaha.smaf-audio" }, + { "sass", "text/x-sass" }, { "sbml", "application/sbml+xml" }, { "sc", "application/vnd.ibm.secure-container" }, { "scd", "application/x-msschedule" }, { "scm", "application/vnd.lotus-screencam" }, { "scq", "application/scvp-cv-request" }, { "scs", "application/scvp-cv-response" }, + { "scss", "text/x-scss" }, { "scurl", "text/vnd.curl.scurl" }, { "sda", "application/vnd.stardivision.draw" }, { "sdc", "application/vnd.stardivision.calc" }, @@ -714,11 +837,14 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "sdkm", "application/vnd.solent.sdkm+xml" }, { "sdp", "application/sdp" }, { "sdw", "application/vnd.stardivision.writer" }, + { "sea", "application/x-sea" }, { "see", "application/vnd.seemail" }, { "seed", "application/vnd.fdsn.seed" }, { "sema", "application/vnd.sema" }, { "semd", "application/vnd.semd" }, { "semf", "application/vnd.semf" }, + { "senmlx", "application/senml+xml" }, + { "sensmlx", "application/sensml+xml" }, { "ser", "application/java-serialized-object" }, { "setpay", "application/set-payment-initiation" }, { "setreg", "application/set-registration-initiation" }, @@ -731,8 +857,11 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "sgml", "text/sgml" }, { "sh", "application/x-sh" }, { "shar", "application/x-shar" }, + { "shex", "text/shex" }, { "shf", "application/shf+xml" }, + { "shtml", "text/html" }, { "sid", "image/x-mrsid-image" }, + { "sieve", "application/sieve" }, { "sig", "application/pgp-signature" }, { "sil", "audio/silk" }, { "silo", "model/mesh" }, @@ -740,12 +869,16 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "sisx", "application/vnd.symbian.install" }, { "sit", "application/x-stuffit" }, { "sitx", "application/x-stuffitx" }, + { "siv", "application/sieve" }, { "skd", "application/vnd.koan" }, { "skm", "application/vnd.koan" }, { "skp", "application/vnd.koan" }, { "skt", "application/vnd.koan" }, { "sldm", "application/vnd.ms-powerpoint.slide.macroenabled.12" }, { "sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide" }, + { "slim", "text/slim" }, + { "slm", "text/slim" }, + { "sls", "application/route-s-tsid+xml" }, { "slt", "application/vnd.epson.salt" }, { "sm", "application/vnd.stepmania.stepchart" }, { "smf", "application/vnd.stardivision.math" }, @@ -778,9 +911,11 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "stf", "application/vnd.wt.stf" }, { "sti", "application/vnd.sun.xml.impress.template" }, { "stk", "application/hyperstudio" }, - { "stl", "application/vnd.ms-pki.stl" }, + { "stl", "model/stl" }, { "str", "application/vnd.pg.format" }, { "stw", "application/vnd.sun.xml.writer.template" }, + { "styl", "text/stylus" }, + { "stylus", "text/stylus" }, { "sub", "text/vnd.dvb.subtitle" }, { "sus", "application/vnd.sus-calendar" }, { "susp", "application/vnd.sus-calendar" }, @@ -793,6 +928,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "swa", "application/x-director" }, { "swf", "application/x-shockwave-flash" }, { "swi", "application/vnd.aristanetworks.swi" }, + { "swidtag", "application/swid+xml" }, { "sxc", "application/vnd.sun.xml.calc" }, { "sxd", "application/vnd.sun.xml.draw" }, { "sxg", "application/vnd.sun.xml.writer.global" }, @@ -801,8 +937,10 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "sxw", "application/vnd.sun.xml.writer" }, { "t", "text/troff" }, { "t3", "application/x-t3vm-image" }, + { "t38", "image/t38" }, { "taglet", "application/vnd.mynfc" }, { "tao", "application/vnd.tao.intent-module-archive" }, + { "tap", "image/vnd.tencent.tap" }, { "tar", "application/x-tar" }, { "tcap", "application/vnd.3gpp2.tcap" }, { "tcl", "application/x-tcl" }, @@ -815,28 +953,37 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "text", "text/plain" }, { "tfi", "application/thraud+xml" }, { "tfm", "application/x-tex-tfm" }, + { "tfx", "image/tiff-fx" }, { "tga", "image/x-tga" }, { "thmx", "application/vnd.ms-officetheme" }, { "tif", "image/tiff" }, { "tiff", "image/tiff" }, + { "tk", "application/x-tcl" }, { "tmo", "application/vnd.tmobile-livetv" }, + { "toml", "application/toml" }, { "torrent", "application/x-bittorrent" }, { "tpl", "application/vnd.groove-tool-template" }, { "tpt", "application/vnd.trid.tpt" }, { "tr", "text/troff" }, { "tra", "application/vnd.trueapp" }, { "trm", "application/x-msterminal" }, + { "ts", "video/mp2t" }, { "tsd", "application/timestamped-data" }, { "tsv", "text/tab-separated-values" }, { "ttc", "font/collection" }, { "ttf", "font/ttf" }, { "ttl", "text/turtle" }, + { "ttml", "application/ttml+xml" }, { "twd", "application/vnd.simtech-mindmapper" }, { "twds", "application/vnd.simtech-mindmapper" }, { "txd", "application/vnd.genomatix.tuxedo" }, { "txf", "application/vnd.mobius.txf" }, { "txt", "text/plain" }, { "u32", "application/x-authorware-bin" }, + { "u8dsn", "message/global-delivery-status" }, + { "u8hdr", "message/global-headers" }, + { "u8mdn", "message/global-disposition-notification" }, + { "u8msg", "message/global" }, { "udeb", "application/x-debian-package" }, { "ufd", "application/vnd.ufdl" }, { "ufdl", "application/vnd.ufdl" }, @@ -847,6 +994,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "uri", "text/uri-list" }, { "uris", "text/uri-list" }, { "urls", "text/uri-list" }, + { "usdz", "model/vnd.usdz+zip" }, { "ustar", "application/x-ustar" }, { "utz", "application/vnd.uiq.theme" }, { "uu", "text/x-uuencode" }, @@ -878,14 +1026,19 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "uvvz", "application/vnd.dece.zip" }, { "uvx", "application/vnd.dece.unspecified" }, { "uvz", "application/vnd.dece.zip" }, + { "vbox", "application/x-virtualbox-vbox" }, + { "vbox-extpack", "application/x-virtualbox-vbox-extpack" }, { "vcard", "text/vcard" }, { "vcd", "application/x-cdlink" }, { "vcf", "text/x-vcard" }, { "vcg", "application/vnd.groove-vcard" }, { "vcs", "text/x-vcalendar" }, { "vcx", "application/vnd.vcx" }, + { "vdi", "application/x-virtualbox-vdi" }, + { "vhd", "application/x-virtualbox-vhd" }, { "vis", "application/vnd.visionary" }, { "viv", "video/vnd.vivo" }, + { "vmdk", "application/x-virtualbox-vmdk" }, { "vob", "video/x-ms-vob" }, { "vor", "application/vnd.stardivision.writer" }, { "vox", "application/x-authorware-bin" }, @@ -895,11 +1048,16 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "vss", "application/vnd.visio" }, { "vst", "application/vnd.visio" }, { "vsw", "application/vnd.visio" }, + { "vtf", "image/vnd.valve.source.texture" }, + { "vtt", "text/vtt" }, { "vtu", "model/vnd.vtu" }, { "vxml", "application/voicexml+xml" }, { "w3d", "application/x-director" }, { "wad", "application/x-doom" }, - { "wav", "audio/x-wav" }, + { "wadl", "application/vnd.sun.wadl+xml" }, + { "war", "application/java-archive" }, + { "wasm", "application/wasm" }, + { "wav", "audio/wave" }, { "wax", "audio/x-ms-wax" }, { "wbmp", "image/vnd.wap.wbmp" }, { "wbs", "application/vnd.criticaltools.wbs+xml" }, @@ -908,7 +1066,9 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "wdb", "application/vnd.ms-works" }, { "wdp", "image/vnd.ms-photo" }, { "weba", "audio/webm" }, + { "webapp", "application/x-web-app-manifest+json" }, { "webm", "video/webm" }, + { "webmanifest", "application/manifest+json" }, { "webp", "image/webp" }, { "wg", "application/vnd.pmi.widget" }, { "wgt", "application/widget" }, @@ -916,14 +1076,14 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "wm", "video/x-ms-wm" }, { "wma", "audio/x-ms-wma" }, { "wmd", "application/x-ms-wmd" }, - { "wmf", "application/x-msmetafile" }, + { "wmf", "image/wmf" }, { "wml", "text/vnd.wap.wml" }, { "wmlc", "application/vnd.wap.wmlc" }, { "wmls", "text/vnd.wap.wmlscript" }, { "wmlsc", "application/vnd.wap.wmlscriptc" }, { "wmv", "video/x-ms-wmv" }, { "wmx", "video/x-ms-wmx" }, - { "wmz", "application/x-msmetafile" }, + { "wmz", "application/x-ms-wmz" }, { "woff", "font/woff" }, { "woff2", "font/woff2" }, { "wpd", "application/vnd.wordperfect" }, @@ -932,28 +1092,35 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "wqd", "application/vnd.wqd" }, { "wri", "application/x-mswrite" }, { "wrl", "model/vrml" }, + { "wsc", "message/vnd.wfa.wsc" }, { "wsdl", "application/wsdl+xml" }, { "wspolicy", "application/wspolicy+xml" }, { "wtb", "application/vnd.webturbo" }, { "wvx", "video/x-ms-wvx" }, { "x32", "application/x-authorware-bin" }, { "x3d", "model/x3d+xml" }, - { "x3db", "model/x3d+binary" }, + { "x3db", "model/x3d+fastinfoset" }, { "x3dbz", "model/x3d+binary" }, - { "x3dv", "model/x3d+vrml" }, + { "x3dv", "model/x3d-vrml" }, { "x3dvz", "model/x3d+vrml" }, { "x3dz", "model/x3d+xml" }, + { "x_b", "model/vnd.parasolid.transmit.binary" }, + { "x_t", "model/vnd.parasolid.transmit.text" }, { "xaml", "application/xaml+xml" }, { "xap", "application/x-silverlight-app" }, { "xar", "application/vnd.xara" }, + { "xav", "application/xcap-att+xml" }, { "xbap", "application/x-ms-xbap" }, { "xbd", "application/vnd.fujixerox.docuworks.binder" }, { "xbm", "image/x-xbitmap" }, - { "xdf", "application/xcap-diff+xml" }, + { "xca", "application/xcap-caps+xml" }, + { "xcs", "application/calendar+xml" }, + { "xdf", "application/mrb-consumer+xml" }, { "xdm", "application/vnd.syncml.dm+xml" }, { "xdp", "application/vnd.adobe.xdp+xml" }, { "xdssc", "application/dssc+xml" }, { "xdw", "application/vnd.fujixerox.docuworks" }, + { "xel", "application/xcap-el+xml" }, { "xenc", "application/xenc+xml" }, { "xer", "application/patch-ops-error+xml" }, { "xfdf", "application/vnd.adobe.xfdf" }, @@ -965,7 +1132,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "xla", "application/vnd.ms-excel" }, { "xlam", "application/vnd.ms-excel.addin.macroenabled.12" }, { "xlc", "application/vnd.ms-excel" }, - { "xlf", "application/x-xliff+xml" }, + { "xlf", "application/xliff+xml" }, { "xlm", "application/vnd.ms-excel" }, { "xls", "application/vnd.ms-excel" }, { "xlsb", "application/vnd.ms-excel.sheet.binary.macroenabled.12" }, @@ -977,6 +1144,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "xlw", "application/vnd.ms-excel" }, { "xm", "audio/xm" }, { "xml", "application/xml" }, + { "xns", "application/xcap-ns+xml" }, { "xo", "application/vnd.olpc-sugar" }, { "xop", "application/xop+xml" }, { "xpi", "application/x-xpinstall" }, @@ -986,6 +1154,7 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "xps", "application/vnd.ms-xpsdocument" }, { "xpw", "application/vnd.intercon.formnet" }, { "xpx", "application/vnd.intercon.formnet" }, + { "xsd", "application/xml" }, { "xsl", "application/xml" }, { "xslt", "application/xslt+xml" }, { "xsm", "application/vnd.syncml+xml" }, @@ -996,8 +1165,11 @@ static const php_cli_server_ext_mime_type_pair mime_type_map[] = { { "xwd", "image/x-xwindowdump" }, { "xyz", "chemical/x-xyz" }, { "xz", "application/x-xz" }, + { "yaml", "text/yaml" }, { "yang", "application/yang" }, { "yin", "application/yin+xml" }, + { "yml", "text/yaml" }, + { "ymp", "text/x-suse-ymp" }, { "z1", "application/x-zmachine" }, { "z2", "application/x-zmachine" }, { "z3", "application/x-zmachine" }, -- cgit v1.2.1