【问题标题】:Alternative to finfo(FILEINFO_MIME)->buffer() in Linux command lineLinux 命令行中 finfo(FILEINFO_MIME)->buffer() 的替代方案
【发布时间】:2013-05-20 22:39:13
【问题描述】:

您可以在 linux 中执行命令,而不是在文件上使用 finfo 来检索 content-type

if(PHP_OS == 'WINNT'){
    $finfo = new finfo(FILEINFO_MIME);
    $content_type = $finfo->file($file);
}
else{
    $content_type = shell_exec("file -bi $file");
}

如果您想将文件的content-type 作为字符串检索,您可以这样做

$finfo = new finfo(FILEINFO_MIME);
$content_type = $finfo->buffer($data);

但是是否有替代方法可以在 linux 命令行中将文件内容的content-type 作为字符串获取?

【问题讨论】:

    标签: php linux mime-types content-type


    【解决方案1】:

    还有一个替代方案:在 Linux 和 Windows 上都使用 finfo

    顺便说一句:你有一个 shell 命令注入漏洞。文件名没有转义——这就是escapeshellargs() 之类的功能。始终使用它们!

    【讨论】:

    • 我不想使用 finfo,因为它不可靠
    • 你确实使用它。为什么不可靠?
    • 因为它只查看文件扩展名.. 我只使用 finfo 作为后备
    • 你错了。 fileinfo 扩展名确实会查看文件的内容。
    猜你喜欢
    • 2018-05-03
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2011-07-20
    • 2014-12-10
    • 2011-12-11
    • 2017-09-17
    相关资源
    最近更新 更多