PHP fileinfo中的错误/不良ogv MIME类型

时间:2017-08-30 14:47:39

标签: php apache cpanel mime-types responsive-filemanager

我在我拥有的大多数服务器上都试过这个,并且PHP似乎为ogv视频文件返回application/ogg。这很奇怪,因为Apache mime配置文件清楚地列出video/ogg(也不可取,但至少它是有意义的,因为信息应该来自那里)。最初我在响应式文件管理器中遇到了这个问题,但是能够独立地重现它。

代码:

$fileinfo = finfo_open(FILEINFO_MIME);
$mime_type = finfo_file($fileinfo, $file);
finfo_close($fileinfo);

var_dump($mime_type);

输出:

string(31) "application/ogg; charset=binary"

此信息来自何处,以及如何更改?

放置.htaccess指令似乎没有任何帮助。我运行cPanel / WHM可能也很重要,但无法找到任何其他相关配置。此外,cPanel还为ogv提供video/ogg,就像Apache一样。

1 个答案:

答案 0 :(得分:0)

finfo_file正在使用Linux file命令:https://linux.die.net/man/1/file

finfo_file的输出:

application/ogg; charset=binary

file -i sample.ogv

的输出
application/ogg; charset=binary

一种解决方案是使用apache_lookup_uri,这听起来可能对您有用,因为您在Apache上运行:http://php.net/apache_lookup_uri

var_dump( apache_lookup_uri('sample.ogv') );

object(stdClass)#1 (16) {
  ["status"]=>
  int(200)
  ["the_request"]=>
  string(27) "GET /tmp/test.php HTTP/1.1"
  ["method"]=>
  string(3) "GET"
  ["mtime"]=>
  int(0)
  ["clength"]=>
  int(0)
  ["chunked"]=>
  int(0)
  ["content_type"]=>
  string(9) "video/ogg"
  ["no_cache"]=>
  int(0)
  ["no_local_copy"]=>
  int(1)
  ["unparsed_uri"]=>
  string(16) "/mime/sample.ogv"
  ["uri"]=>
  string(16) "/mime/sample.ogv"
  ["filename"]=>
  string(48) "/tmp/sample.ogv"
  ["allowed"]=>
  int(0)
  ["sent_bodyct"]=>
  int(0)
  ["bytes_sent"]=>
  int(0)
  ["request_time"]=>
  int(1504107700)
}