php - 使用 PHP 检查上传文件的 mime 类型。 mime_content_type、fileINfo、linux 文件不可用

标签 php linux mime-types

我整天都在网上搜索,找不到解决这个问题的合理方法。

我正试图帮助一个客户将一个从另一个主机转移到 Godaddy 共享主机的站点重新组合在一起。

该站点是使用 CakePHP 构建的,一行使用 mime_content_type,这在该服务器上不可用。 FILE 命令和文件信息都不是。

我尝试了 upgrade.php 替换,但它可能失败了,因为它找不到 mime_magic。

PEAR 解决方案因 FILE 不可用而失败。

有什么解决办法吗?

这里的唯一目标是找出文件是否为 PDF,而不是基于扩展名。

PHP 版本 5.2.17

非常感谢。

最佳答案

PDF 文件始终以 %PDF- 开头,因此您可以读取前 4 个字节并检查它们是否相等。

function is_pdf($fn) {
  $f = fopen($fn, 'rb');
  if ($f === false) return false;
  $res = fread($f, 5) == '%PDF-';
  fclose($f);
  return $res;
}

但是,仅download 可能更容易MIME 魔术文件,并将其名称命名为 finfo_open (php 5.3+) 或配置 mime_magic.magicfile并使用 mime_content_type

关于php - 使用 PHP 检查上传文件的 mime 类型。 mime_content_type、fileINfo、linux 文件不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668112/

相关文章:

linux - 在 Fedora 23 上安装特定版本的 pupppet

javascript - 如何设置本地文件的MIME类型?

php - 俄语月份名称错误

PHP:如何使用 Y-m-d 获取日?

linux - 在 linux 中显示从今天起恰好 5 天前登录的用户列表?

c++ - Pthread 条件变量不可预测的结果

internet-explorer-7 - Font Awesome 图标未在 IE7 上显示

node.js - Gmail api 从 Users.message 资源获取电子邮件正文(文本或 html)的正确方法

php - 如何在mysql日期类型字段中插入一个空值?

php - MySQL建表后添加表引用约束