繁体   English   中英

PHP-上传一个或两个文件(大照片)效果很好-上传5/6 +似乎甚至没有注册(它只是显示上传表格)

[英]PHP - Uploading one or two files (large photos) works fine - uploading 5/6+ doesn't seem to even register (it just shows the upload form)

我有一个基本上带有此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
(
)

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

您需要在php.ini中修复此问题,如果您位于共享框中,则需要询问ISP。

另外,请记住也要增加'post_max_size'的值http://www.php.net/manual/zh/ini.core.php#ini.post-max-size

当上传文件的大小超过post_max_size时,将发生此错误。 上传2个大文件时遇到相同的问题,更改此值后效果很好。 另外,也许您必须更改upload_max_filesize值。

如果您在localhost上工作,则可以轻松更改php.ini。 但是当您想在服务器中将其更改为Cpanel时,可以遵循此http://www.webhostingzone.org/change-php-settings.html

您的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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM