所以我有一个上传条款和功能的功能条件到文件夹。我获取文件的扩展名和MIME类型,并检查它们是否有效。截至最近,我上传的所有文件都将$_FILES[$key]['size']
作为0
返回,而本地磁盘上的文件确实具有文件大小。当我使用以下脚本检查MIME类型时,它总是返回inode/x-empty
。
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$fileType = finfo_file($finfo, $file['tmp_name']); // Returns 'inode/x-empty'
$expl = explode('.', $file['name']);
$fileExt = end($expl);
我似乎无法弄清楚为什么会发生这种情况,因为几个月前它还没有发生。我之前从未见过这种情况。
以下是$ _FILES输出的示例:
Array
(
[name] => audite_marlow_logo.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpcHbiLN
[error] => 0
[size] => 0
)
服务器的php.ini能够处理我上传的任何文件。 post_max_size
设置为疯狂128M
。
我上传的所有文件都返回error
,整数值为0
。
我真的很遗憾为什么会这样。
答案 0 :(得分:0)
因为,你问一个tmp文件名的finfo(phpcHbiLN)然而$_FILE['type']
检查上传文件的finfo(audite_marlow_logo.jpg
)。
另一方面,finfo需要一条绝对路径,因此sur tmp/phpcHbiLN
是绝对路径。
inode/x-empty
表示您尝试检查的文件为空,只需检查is_readable()
,file_exists()
或is_file()
即可恢复您的文件。