因此,我在使用enctype =“ multipart / form-data”的页面上有一个表单,并且在名为'upload_file'的表单上有一个文件字段。当我提交表单并使用print_r($ _ FILES)时,我得到:
Array
(
[upload_file] => Array
(
[name] => Test-Blank-PDF.pdf
[type] => application/pdf
[tmp_name] => /tmp/phpvr5N3Z
[error] => 0
[size] => 0
)
您会注意到错误和大小均为0。我使用以下代码来处理上传:
$file = "/tmp/" . $_FILES['upload_file']['name'];
if ($_FILES['upload_file']['error'] === UPLOAD_ERR_OK) {
move_uploaded_file($_FILES['upload_file']['tmp_name'], $file);
}
我在/tmp/Test-Blank-PDF.pdf中获得了创建的文件($ file),但它是0字节(空)。如果我还尝试在脚本完成之前使用file_get_contents保存/读取$ _FILES ['upload_file'] ['tmp_name']的值,则该值也为空。
它在带有PHP 5.6的CentOS 6上运行。尽管其他表单通过AJAX运行,但其他表单上载和处理文件也可以,但是它们仍然在后端使用$ _FILES进行保存。这是唯一没有的。
我已经验证了各种PHP设置(file_uploads和post_max_size均已正确设置)。我的表单使用POST,并且$ _FILES数组确实打印数据(例如不为空)。我检查了Apache的错误日志(包括SSL和纯日志),两者均未出现错误。我什至关闭了iptables进行测试,但仍然失败。
有什么想法吗?我在这里茫然。 :/