2014-09-24 96 views
-1

我发现我在一个网站上设置了两台不同的服务器,在一台服务器上,当我上传一个特定文件时,文件的mimetype被检测为视频/ mpeg,使用mime_content_type($filepath);,但在另一台服务器上,相同的文件mimetype在同一行代码中被确定为application/octet-stream。是否有某种PHP设置或PHP版本的差异会导致这种情况发生?第一台服务器运行PHP 5.3.27,第二台服务器运行PHP 5.3.2。PHP上传mimetype不同在不同的服务器上?

编辑:当我尝试通过FileInfo确定mimetype时也会发生同样的情况。

+0

使用'\ FileInfo'而不是过时的'mime_content_type()' – DanFromGermany 2014-09-24 17:01:19

+0

我试过用FileInfo进行测试,结果相同,所以这不是问题。 – Kai 2014-09-24 17:02:07

回答

0

我找不到相关信息,但我认为PHP从/usr/share/mime/获取MIME信息。

如果您有mpeg.xml,请在/usr/share/mime/video/之间查看。

如果不是,here is mine(我可能会在不久的将来删除)。

你也可以尝试运行命令/usr/bin/update-mime-database

更多信息:https://wiki.debian.org/MimeTypesSupport

更新:

PHP使用/usr/share/file/magic.mgc魔术哑剧数据库。

请谷歌如何更新这个数据库,并重新加载PHP后,它可能会工作。

+0

我可以在不使用相同文件的服务器上替换/usr/share/file/magic.mgc吗?我试图这样做,然后重新启动apache,但它似乎也没有工作。 – Kai 2014-09-25 22:20:03

相关问题