PHP$_FILES数组已损坏,为空时包含无效字符


PHP $_FILES array corrupt, when empty contains invalid characters

我创建的CMS中包含许多表单。直到今天他们都工作得很好。我遇到的问题与正在上传的文件和包含奇数字符的$_FILES数组有关。

包含在我的表格中:

<tr>
    <td>Related PDF File:</td>
    <td><input type="file" name="pdfFile" size=50" value="<? pv($frm["pdfFile"]) ?>"></td>
</tr>

提交后,它返回到我的脚本,我验证字段是否有提交的文件:

if($_FILES['pdfFile']['name'] != '' && $_FILES['pdfFile']['error'] == 0) {
    $up_file->save($CFG->dirroot . "/docs/services/", "pdfFile", 1);
    $frm['pdfFile'] = $up_file->getFilename('pdfFile');
}

问题是,如果我在字段没有提交任何内容的情况下显示$_FILES数组,我会得到以下结果:

Array
(
    [pdfFile] => Array
        (
            [name] => ò…
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )
)

[name]里面有一些时髦的特殊人物。有人见过这个吗?它只发生在我的一台服务器上。如果输入字段实际上有一个提交的文件,则没有问题。

提前感谢您的评论。

找出问题所在。PHP最近被我们的托管提供商更新为5.3.8。这个版本中有一个错误,它删除了上传文件中的第一个字符。您可以在这里看到错误:$_FILES"name"在上传后缺少第一个字符。

由于某些原因,更新后magic_quotes_gpc被设置为打开。关掉它,一切都好了。

谢谢你的评论。

[error] => 4

使用文档:

UPLOAD_ERR_NO_FILE
    Value: 4; No file was uploaded.

确保您的<form>标记中有enctype="multipart/form-data"属性。