2014-09-24 125 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

相關問題