我在 CentOS 服务器上安装了 PHP 5.3.8 时,无法使用 fileinfo 检测简单 PNG 文件的 mime 类型。
问题
基本上,如果我有以下代码:
<?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.mime 文件,并使用MAGIC
环境变量,并通过在中指定文件路径finfo_open
调用(如上所述)。
我尝试更新 PHP。
...现在我别无选择。
如果有人能帮助我,我会通过太空发送幸福的波浪,这样他/她就可以永远幸福地生活。
Cheers