我在使用fileinfo检测简单PNG文件的mime类型时遇到问题,在CentOS服务器上安装了PHP 5.3.8。
问题
基本上,如果我有以下代码:
<?php
$const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
$handle = finfo_open($const, '/usr/share/file/magic.mime');
$result = finfo_file($handle, '/var/vhosts/v4dev/public/Melvin.png');
echo $result;
unset($handle);
?>
如您所见,该文件是PNG图像。已检查文件的头字节并且是正确的。但是这个页面输出的结果不正确:
application/octet-stream
我想这是因为无法检测到文件类型,fileinfo返回了默认响应,但我发现没办法检查它。
我尝试了什么
为了检查magic.mime文件的正确性,我使用了文件控制台命令:
file -m /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png
返回了预期结果:
/var/vhosts/v4dev/public/Melvin.png: image/png
我还尝试了Apache提供的另一个magic.mime文件,但问题仍然存在。
我尝试通过默认的fileinfo位置(使用符号链接和文件副本),MAGIC
环境变量指定magic.mime文件,并指定finfo_open
调用中的文件路径(如上所述)。
我尝试更新PHP。
......现在我没有选择。
如果有人能帮助我,我会在太空中发出幸福的浪潮,这样他/她就能过上幸福的生活。
干杯
答案 0 :(得分:1)
那么为什么不从脚本中调用file
命令呢?
$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png`
当然,它并不完美,但它是一种选择。