0

我有一个基本上是这个html的页面:

<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploadedfile[1]" type="file" />
<input class="fupload" name="uploadedfile[2]" type="file" />
<input class="fupload" name="uploadedfile[3]" type="file" />
<input class="fupload" name="uploadedfile[4]" type="file" />
<input class="fupload" name="uploadedfile[5]" type="file" />
<input class="fupload" name="uploadedfile[6]" type="file" />


<input type=submit>

和一些 php 来处理文件。如果上传了几张(通常 < 5 张)照片,它可以正常工作

如果我上传 5 个或 6 个,它似乎甚至没有注册我已经上传了文件。我已经通过在代码上方添加来对此进行了测试(这是在精简的测试页面上以找出问题所在)。

在上传几张照片时它工作正常(即在 print_r($_FILES) 中它显示文件详细信息。在上传 5 或 6 张照片时它只打印一个空数组(与不上传任何内容相同)

有任何想法吗?

(这是完整的脚本。上传一张或两张图片会在 print_r($_FILES) 中显示数据。上传 5 张或更多(ish),不显示任何数据。每张照片约为 2-3mb)

<?


  ini_set('max_upload_filesize', 8388608);
 ini_set('upload_max_filesize', 8388608); 
 ini_set('memory_limit', '125M');
echo "<pre>";
print_r($_FILES);
print_r($_POST);

?> 


<form method="post" enctype="multipart/form-data"  action="photo_test.php">

<input class="fupload" name="uploaded[1]" type="file" />
<input class="fupload" name="uploaded[2]" type="file" />
<input class="fupload" name="uploaded[3]" type="file" />
<input class="fupload" name="uploaded[4]" type="file" />
<input class="fupload" name="uploaded[5]" type="file" />
<input class="fupload" name="uploaded[6]" type="file" />


<input type=submit>
</form>

结果:

如果我只上传一个文件

Array
(
    [uploadedfile] => Array
        (
            [name] => Array
                (
                    [1] => DSCN0426.JPG
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [type] => Array
                (
                    [1] => image/jpeg
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [tmp_name] => Array
                (
                    [1] => /tmp/phpNM967F
                    [2] => 
                    [3] => 
                    [4] => 
                    [5] => 
                    [6] => 
                )

            [error] => Array
                (
                    [1] => 0
                    [2] => 4
                    [3] => 4
                    [4] => 4
                    [5] => 4
                    [6] => 4
                )

            [size] => Array
                (
                    [1] => 2824091
                    [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => 0
                )

        )

)
Array
(
)

如果我上传多个文件(5 个或 6 个)

Array
(
)

Array
(
)
4

4 回答 4

1

当上传文件的大小超过post_max_size时会发生此错误。我在上传 2 个大文件时遇到了同样的问题,当我改变这个值时,它工作得很好。另外,也许您必须更改upload_max_filesize值。

如果您在本地主机上工作,您可以轻松更改 php.ini。但是当您想在服务器中更改为 Cpanel 时,您可以按照此http://www.webhostingzone.org/change-php-settings.html

于 2012-03-16T05:31:56.557 回答
1

PHP 在执行脚本之前处理实际上传(并用文件的大小和 tmp 路径填充 $_FILES 全局数组),因此脚本中的任何 ini_get() 或 set_time_limit() 调用都是无用的。

你需要在你的 php.ini 中解决这个问题,如果你在一个共享的盒子上,你需要询问你的 ISP。

另外,请记住也增加“post_max_size”值http://www.php.net/manual/en/ini.core.php#ini.post-max-size

于 2011-03-01T21:41:03.053 回答
0

你的 php.ini 的 post_max_size 是多少?您还必须调整此值(默认为 8MB),这就是您的 $_POST 数组为空的原因。

编辑:upload_max_filesize 和 post_max_size 不能使用 ini_set 更改,因为它们的可更改状态设置为 PHP_INI_PERDIR(请参阅http://be2.php.net/manual/en/ini.list.php)它应该是 PHP_INI_USER。

因此,您显然坚持使用默认值(可能是 2M 和 8M),因此是空的 $_FILES。

您必须使用服务器配置(php.ini 或 apache conf)或 .htaccess 文件更改这些选项。请参阅http://php.net/manual/en/configuration.changes.php

于 2011-03-01T21:47:57.813 回答
-1

脚本可能超时。您应该尝试上传 6 个非常小的文件和/或查看set_time_limit()

于 2011-03-01T21:23:53.740 回答