PHP 5.3.8 上的 Mime 类型检测失败并显示 fileinfo

发布于 2024-12-11 19:21:20 字数 1096 浏览 0 评论 0原文

我在 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 环境变量以及在 finfo_open 中指定文件路径来指定 magic.mime 文件代码>调用(如上所述)。

我尝试更新 PHP。

...现在我别无选择。


如果有人能帮助我,我会通过太空发送幸福的波浪,这样他/她就可以永远幸福地生活。

干杯

I'm having trouble detecting the mime type of a simple PNG file with fileinfo, with PHP 5.3.8 installed on a CentOS server.

The problem

Basically, if I have the following code :

<?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);
?>

As you can see the file is a PNG image. The header bytes of the file has been checked and are correct. But this page outputs an incorrect result :

application/octet-stream

I guess this is because the file type could not be detected, and fileinfo returned the default response, but I found no way to check that.

What I tried

To check the magic.mime file correctness, I used the file console command :

file -m /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png

Which returned the expected result :

/var/vhosts/v4dev/public/Melvin.png: image/png

I also tried another magic.mime file provided with Apache, but the problem remains.

I tried specifying the magic.mime file through the default fileinfo location (with symlink and copy of the file), with the MAGIC environment variable, and by specifying the file path in the finfo_open call (as above).

I tried updating PHP.

... and now i'm out of options.


If anyone could help me with this, i'd send waves of happiness through space so he/her can live happily ever after.

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娜些时光,永不杰束 2024-12-18 19:21:20

那么为什么不从脚本中调用 file 命令呢?

$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png`

当然,它并不完美,但它是一个选择。

So why not call the file command from your script?

$result = `file -bm /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png`

Sure, it's not perfect, but it's an option.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文