来自 PHP 文件信息的不正确/不受欢迎的 ogv MIME 类型
Posted
技术标签:
【中文标题】来自 PHP 文件信息的不正确/不受欢迎的 ogv MIME 类型【英文标题】:Incorrect/undesirable ogv MIME type from PHP fileinfo 【发布时间】:2018-02-08 08:25:04 【问题描述】:我在我拥有的大多数服务器上都试过这个,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 一样。
【问题讨论】:
如果没有比这里执行的更深入的分析,就不可能知道 Ogg 容器实际包含什么。 很高兴知道。我会对有关如何强制 PHP 返回我想要的 ogv 的 MIME 类型的信息感到满意——最好不要更改 RFM 代码。即使了解 PHP 从哪里获取这种类型(直接从文件头?这似乎不太可能,但可能)可能允许我强制它使用 .htaccess 来代替。 【参考方案1】: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)
【讨论】:
谢谢。记录在案:使用 apache_lookup_uri 不起作用,最终我不得不修改 Responsive FileManager 代码来解决这个问题。希望它对其他人有用。以上是关于来自 PHP 文件信息的不正确/不受欢迎的 ogv MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章
使用PHP将视频文件转换为mp4、flv、webgl、webm、ogv等