mime_content_type 仅返回 css 和 js 文件的文本/纯文本

Posted

技术标签:

【中文标题】mime_content_type 仅返回 css 和 js 文件的文本/纯文本【英文标题】:mime_content_type returning text/plain for css and js files only 【发布时间】:2017-12-24 01:30:27 【问题描述】:

我在 php 的 mime_content_type 上遇到了这个奇怪的问题,它工作正常,除了 CSS 和 javascript 文件,它返回 text/plain (PHP 的默认 mime 设置为 text/html)。

修改 mime.types 文件似乎没有什么区别(它在 httpd.conf 上的路径是正确的)。

例子

<?php
  echo(mime_content_type('index.html')); // returns text/html
  echo(mime_content_type('default.png')); // returns image/png
  echo(mime_content_type('bootstrap.min.js')); // returns text/plain
  echo(mime_content_type('css/animate.css')); // returns text/plain
  echo(mime_content_type('css/style.css')); // returns text/x-asm
?>

在相同的 Apache 安装上提供的相同文件在其 Content-Type 标头上得到正确标记,这几乎就像 PHP 使用其 mime 检测机制一样。

我正在使用Wamp 3.0.6 64-bitWindows 10 64-bit build 15063.483 mod_mime and mode_mime_magic 上的内置PHP 7.0.10 已启用。

【问题讨论】:

【参考方案1】:

PHP 文档对此非常明确:

返回由使用确定的文件的 MIME 内容类型 来自 magic.mime 文件的信息。

PHP 和 Apache 不使用相同的 mime 数据库。 Apache 使用 mime.types,但 PHP 使用 magic.mime(不记得它的位置,我认为在 Unix 系统上是 /etc/

不知道如何在 Windows 上编辑它,但这里有一些适用于 Linux 的提示:How to create a custom magic file database

【讨论】:

您,先生,很准确,看来我只能做 Apache 所做的事情了,通过文件扩展名猜出正确的 mime。

以上是关于mime_content_type 仅返回 css 和 js 文件的文本/纯文本的主要内容,如果未能解决你的问题,请参考以下文章

PHP mime_content_type() 在 Windows 上失败

JQuery - 动态 CSS 动画更改仅在我离开浏览器窗口并返回时发生

PHP如何判断是不是是MP3文件

如何仅使用 CSS 过滤器将黑色转换为任何给定的颜色

php 下载文件的头信息 Determine Content Type

灰度背景 Css 图像