PHPs mime_content_type()在Windows上失败

时间:2008-10-13 12:58:49

标签: php windows apache xampp mime-types

我知道mime_content_type()已被弃用,但在我看来,替代方案目前更糟。 Finfo似乎需要在Windows上添加文件和更改ini方向;我不想为我正在制作的剧本要求这个。

我需要找到文件的mimetype,但是在Windows上调用mime_content_type($filename)时它会失败。 mime_magic.magicfile指向正确的文件,但是当在ini文件中启用mime_magic.debug时,我收到以下错误消息:

Warning: mime_content_type()[http://www.php.net/mime_magic]: mime_magic not initialized in C:\xampp\htdocs\test.php on line 2

我不确定这是否是一个问题,或者当我禁用调试时它仍然会发生,它只是没有告诉我。

我检查过,ini文件中启用了extension=php_mime_magic.dll,httpd.conf指定了

LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so

我正在使用XAMPP 1.6.5。

3 个答案:

答案 0 :(得分:1)

这可能与this bug report有关。当您按'FOO' is not a valid mimetype, entry skipped行调用脚本时,错误日志中是否有任何错误?

不幸的是,该特定线程中的最终响应是继续使用Fileinfo ..

阅读another thread描述同样的问题 - 当你打开调试时,你是否将它设置为“On”或1?不应该有所作为,但在上面链接的线程中,这似乎是解决方案的一部分。


  

我不确定这是否是一个问题,或者当我禁用调试时它仍然会发生,它只是没有告诉我。

如果在调试关闭的情况下回显mime_content_type的值,您会得到什么?

答案 1 :(得分:0)

  

Finfo似乎需要在Windows上添加文件和更改ini方向;我不想为我正在制作的剧本要求这个。

你试过finfo_buffer吗?这允许您将文件用作字符串,因此您可以这样做:

$finfo = new finfo;
$filename = $_GET['filename'];
var_dump($finfo->buffer(file_get_contents($filename)));

此错误报告中的一个问题是mime数据库已过期 - 您是否尝试使用其他副本?

答案 2 :(得分:0)

Fileinfo可以成为Windows上的一个技巧。这里的说明:http://forums.zend.com/viewtopic.php?f=8&t=337#p14681