PHP文件上传总是返回MIME类型为“inode/x-empty”。

4

我有一个上传条款和条件到文件夹的函数。我获取文件的扩展名和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。
我上传的所有文件都会返回一个整数值为0的错误。
老实说,我真的不知道为什么会发生这种情况。

快速问题...如果文件大小大于您的php.ini post_max_size值,则可能会发生这种情况。如果只是一个小的jpeg文件,这种情况高度不太可能,但询问一下以确保它不是明显的罪魁祸首是值得的。 - Abela
@Abela:我示例中的文件大小为76kb。我可以在另一页上上传比这个大得多的图片。 - Audite Marlow
好的,我想那就是情况了。我建议尝试一下这个链接:https://dev59.com/OGsz5IYBdhLWcg3wWmYy 有些错误可能会出现,该页面上的代码应该有助于诊断它。 - Abela
@Abela: 我上传的每个文件都返回错误代码0。 - Audite Marlow
@Abela:是的,多次尝试过,但它只是返回而没有任何错误。 - Audite Marlow
显示剩余4条评论
1个回答

2
因为你请求一个临时文件名的finfo (phpcHbiLN),但是$_FILE['type']检查上传文件(audite_marlow_logo.jpg)的finfo。 换句话说,finfo需要一个绝对路径,所以确保tmp/phpcHbiLN是一个绝对路径。
inode/x-empty表示你要检查的文件为空,请通过简单的检查is_readable()、file_exists()或is_file()确保你的文件是可读的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接