真是奇怪的PHP行为与多个文件上传,我的坏?

真是奇怪的PHP行为与多个文件上传,我的坏?,php,forms,file,file-upload,Php,Forms,File,File Upload,这里的行为很奇怪。当前upload\u max\u filesize是2M我的PHP安装有问题吗? <?php if(isset($_FILES['images'])) var_dump($_FILES['images']); ?> <html> <head> <title></title> <meta http-equiv="Content-type" content="text/html

这里的行为很奇怪。当前
upload\u max\u filesize
2M
我的PHP安装有问题吗?

<?php if(isset($_FILES['images'])) var_dump($_FILES['images']); ?>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
    </head>
    <body>
        <form method="post" action="processupload.php"
            enctype="multipart/form-data">
            <input id="images[]" name="images[]" type="file" multiple="" />
            <input name="submit" type="submit" value="Upload" />
        </form>
    </body>
</html>

测试显示了不同的行为:

  • 大尺寸(12米)mp3文件:
    $\u文件['images']
    未设置
  • 中等大小(4M)mp3文件:
    $\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
编辑:找到了自己,但我还不能回答自己的问题:

  • 在12M文件的情况下,
    $\u文件['images']
    为空,因为post数据的(大小)之和大于post最大大小()
  • 在4M文件的情况下,
    类型
    大小
    为空,因为上载大小大于上载最大文件大小

当有多个上载文件时,您必须访问索引为0..MaxUploadFiles的当前文件

$_FILES[<current_index_for_file>]['images']['error']
$\u文件[]['images']['error']

您只需检查

print_r($_FILES);
现在,您将了解阵列的结构。 如果我记得很清楚,您可以通过以下方式访问值:

$_FILES['images']['size'][<index>]
$_FILES['images']['type'][<index>]
$_FILES['images']...
$\u文件['images']['size'][]
$\u文件['images']['type'][]
$\u文件[“图像”]。。。

您可以将这些行放在代码的顶部,因为PHP.ini中的全局设置是有限的,所以您可以使用下面的行进行编程更改

ini_set('post_max_size', '25M');
ini_set('upload_max_filesize', '20M');
当您增加POST数据的大小时,您必须增加脚本执行时间,否则它将抛出致命错误,您可以将脚本执行时间增加

ini_set('max_execution_time', 0);

这里我提到的0是无限制的,出于安全目的,您必须使用服务器进行测试,并将其限制在几秒钟内。

不是真的<代码>$\u文件[0]['images']
即使选择了多个文件也为空。对不起,忘记['error'],设置正确,我的不好,但是关于类型和大小的奇怪行为仍然存在。完全错误。脚本在数据上传后执行。因此,最大执行时间是无用的。无法更改post_max_size/upload_max_filesize,因为数据已上载。顺便说一句,正确的anwser在我的第一篇文章中。@Polmonino您可以将这些代码作为两个页面(表单页面和操作页面)的通用代码,您应该知道将这些代码放置在何处。在分析任何事情之前,不要说完全错误的话。很酷,老兄,你又错了。你把
post\u max\u size
upload\u max\u filesize
放在哪里并不重要,因为它们都是PHP\u INI\u PERDIR(意味着你不能在脚本中更改它们)。而且
max\u execution\u time
是无用的,因为中的脚本只有在上传完成后才能执行!