PHP一次只能看到20个上传文件

时间:2011-05-21 16:58:14

标签: php file upload

当我尝试一次上传超过20个文件时,Web服务器只会看到前20个。任何其他文件都会被忽略。有什么问题?

尝试简单的代码:

<form action="index.php" method="post" enctype="multipart/form-data">
<?php
if($_FILES){
    print_r($_FILES);
}
else{
    for($i = 0; $i < 30; $i++)
    {
        echo '<input type="file" name="file'.$i.'"><br/>';
    }
}
?>
<input type="submit" value="go">
</form>

print_r()输出:

Array ( [file0] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD42.tmp [error] => 0 [size] => 274217 ) [file1] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD52.tmp [error] => 0 [size] => 274217 ) [file2] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD73.tmp [error] => 0 [size] => 274217 ) [file3] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD83.tmp [error] => 0 [size] => 274217 ) [file4] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpD94.tmp [error] => 0 [size] => 274217 ) [file5] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDB4.tmp [error] => 0 [size] => 274217 ) [file6] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDC5.tmp [error] => 0 [size] => 274217 ) [file7] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDE5.tmp [error] => 0 [size] => 274217 ) [file8] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpDF5.tmp [error] => 0 [size] => 274217 ) [file9] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE06.tmp [error] => 0 [size] => 274217 ) [file10] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE26.tmp [error] => 0 [size] => 274217 ) [file11] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE37.tmp [error] => 0 [size] => 274217 ) [file12] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE57.tmp [error] => 0 [size] => 274217 ) [file13] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE68.tmp [error] => 0 [size] => 274217 ) [file14] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE78.tmp [error] => 0 [size] => 274217 ) [file15] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpE98.tmp [error] => 0 [size] => 274217 ) [file16] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEB9.tmp [error] => 0 [size] => 274217 ) [file17] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEC9.tmp [error] => 0 [size] => 274217 ) [file18] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEE9.tmp [error] => 0 [size] => 274217 ) [file19] => Array ( [name] => 39442.jpg [type] => image/jpeg [tmp_name] => W:\tmp\phpEFA.tmp [error] => 0 [size] => 274217 ) )

htaccess的: php_value max_file_uploads 100 - 没有帮助

ini_set('max_file_uploads', 100) - doesn't help

我刚在本地服务器上添加了一行到php.ini:

max_file_uploads = 100

这有帮助。但我不认为主机在客户端的Web服务器上更改它。如果不编辑php.ini,这将对此值产生非常酷的影响。

8 个答案:

答案 0 :(得分:15)

max-file-uploads设置设置得更高(是的,这是'新的'设置)。

它是PHP_INI_SYSTEM,因此可以在php.ini或webserver / apache配置中设置。我担心没有.htaccess或'in-script'访问权限。

答案 1 :(得分:8)

最近我遇到了同样的问题,但遗憾的是上述解决方案都没有对我有用。所以我认为我必须在这里分享有效的解决方案

当我尝试上传50多张图片时,服务器将其限制为20.(我正在使用PHP 5.3.6开发Centos服务器)

在PHP.ini文件中设置max_file_uploads = 100甚至没有帮助,但数字文件上传限制更改为25

在phpinfo()页面中搜索数值25时,我遇到了一个值为25的参数suhosin.upload.max_uploads。

将suhosin.upload.max_uploads设置为100以及PHP.ini文件中的max_file_uploads = 100,现在在服务器上我们可以上传多达100个文件。 (我不确定我们是否有任何其他文件,我们修改值suhosin参数,但在php.ini或php.d / suhosin.ini中设置suhosin值将起作用:))

max_file_uploads = 100    
suhosin.upload.max_uploads=100

http://www.hardened-php.net/suhosin/configuration.html

答案 2 :(得分:2)

PHP可以发布多少限制。请参阅upload_max_filesizemax_file_uploadspost_max_size指令。

答案 3 :(得分:1)

您可能会遇到post_max_sizeupload_max_filesize设置限制。

你可以在php.ini中更改它们(post_max_size应该大于upload_max_filesize)

答案 4 :(得分:1)

您可以在托管的网站目录中创建 php.ini 文件,并将其写入其中:

  

max_file_uploads = 400

这是允许在大多数主机上覆盖php.ini的方法(但在我试过的时候不在localhost XAMP中等)

答案 5 :(得分:1)

如果您将PHP作为Apache模块运行,您可能希望在虚拟主机级别(即httpd.conf)更改它。您需要记住,作为PHP_INI_SYSTEM指令,您必须使用 php_ admin _value (常规 php_value 将被忽略) 。示例代码可以是:

<Location "/api">
    php_admin_value max_file_uploads 250
</Location>

答案 6 :(得分:0)

max_file_uploads配置选项将限制设置为20。

http://de3.php.net/manual/en/ini.core.php#ini.max-file-uploads

答案 7 :(得分:0)

第1步:如果您正在使用Xampp服务器在localhost上工作,则请打开xampp控制面板 单击配置按钮,然后打开php.ini

第2步:找到 max_file_uploads = 20

第3步:使用自定义值更改值20

第4步:保存此 php.ini 文件并关闭

第5步:通过单击“停止”重新启动Apache服务器,然后单击“开始”,等待绿色背景意味着apache成功启动

通过使用您的代码上传文件的最终测试