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
函数代替类,结果相同(当然)我有以下软件版本:
- 操作系统:FreeBSD 10.3
- PHP:7.1.4
- fileinfo.dll:php71 fileinfo版本1.0.5
- Apache:2.4.23(FreeBSD)
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。这就是我看到的。