我在我拥有的大多数服务器上都试过这个,并且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一样。
答案 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)
}