Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fileinfo`failed Identification data 0` PHP 7.1中出现错误_Php - Fatal编程技术网

Fileinfo`failed Identification data 0` PHP 7.1中出现错误

Fileinfo`failed Identification data 0` PHP 7.1中出现错误,php,Php,我正在尝试在我的服务器上运行目录列表器 我使用的代码很简单: $fi = new finfo(FILEINFO_MIME_TYPE); if (! file_exists($filePath)) { return false; } $type = $fi->file($filePath); 无论我尝试什么文件路径,它都会不断抛出错误: PHP警告:finfo::file():未能识别数据0:无法发生: 中的无效关系“@” 我试过以下几件事: 测试file命令,该命令工作正常并

我正在尝试在我的服务器上运行目录列表器

我使用的代码很简单:

$fi = new finfo(FILEINFO_MIME_TYPE);

if (! file_exists($filePath)) {
    return false;
}

$type = $fi->file($filePath);
无论我尝试什么文件路径,它都会不断抛出错误:

PHP警告:finfo::file():未能识别数据0:无法发生: 中的无效关系“@”

我试过以下几件事:

  • 测试
    file
    命令,该命令工作正常并返回正确的mime类型
  • 尝试使用
    finfo
    函数代替类,结果相同(当然)
  • 尝试了各种不同内容的文件,txt/php/javascript/json/html
  • 上述操作均未更改错误消息

    你知道怎么解决这个问题吗


    我有以下软件版本:

    • 操作系统:FreeBSD 10.3
    • PHP:7.1.4
    • fileinfo.dll:php71 fileinfo版本1.0.5
    • Apache:2.4.23(FreeBSD)

    啊Windows。。。是的,我猜您没有所需的mime类型数据库

    尝试
    var_dump getenv('MAGIC')

    注: 通常,使用捆绑的magic数据库(保留magic_文件和magic环境变量未设置)是最好的做法,除非您特别需要自定义magic数据库

    以下是该数据的一个来源:

    或者,在WAMP中尝试查看:C:\WAMP\bin\apache\apacheX.X.X\conf\mime.types

    --

    更新

    我假设PHP中的代码没有平面文件“db”中列出mime类型的扩展名那样频繁地更新。我从来都不清楚字节序列检测有多健壮,或者它到底是如何工作的。我一直认为检测mime类型是最好的猜测。最好看一下,以便更好地理解


    我也不清楚
    FILEINFO\u MIME
    FILEINFO\u MIME\u TYPE
    FILEINFO常量之间的区别。OOP函数与过程函数相比,比如
    mime\u content\u type()
    ,在文档中没有提及,也有点混乱。一般来说,文档在这些功能上不是很好。有一段时间,他们错误地将
    mime\u content\u type()?玩finfo-ctor的第二个参数?特别是一个坏的
    MAGIC
    env变量?你能读取文件吗?@ficuscr getenv('MAGIC')返回false@Sebas是的,我能打开并打开fileAh窗口吗?我的系统操作系统在文章的底部:FreeBSD。MAGIC ENV变量返回false,因此我猜您是对的。但是我不理解apachemime.types文件。我需要使用它而不是finfo来匹配文件扩展名吗?我宁愿修复魔法库?抱歉,可能是多任务处理和读取错误。Windows之所以适合,是因为安装了不寻常的apache。无论如何,finfo函数依赖于该文本文件来检测mime类型。“返回通过使用magic.MIME文件中的信息确定的文件的MIME内容类型。”web服务器通常提供与文件扩展名对应的MIME类型的知识。也许被认为更流行?不知道。OP确实提到了一个DLL tho,我认为它在任何linux系统中都不起作用。谢谢Sebas。这就是我看到的。