【问题标题】:PHP see only 20 uploading files at a timePHP 一次只能看到 20 个上传文件
【发布时间】:2011-08-30 07:17:01
【问题描述】:

当我尝试一次上传超过 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

这很有帮助。但我不认为宿主在客户端的网络服务器上改变它。如果不编辑php.ini,对这个值产生非常酷的效果。

【问题讨论】:

  • print_r($_FILES) 显示什么?你能发布完整的输出吗?
  • 您确定您的浏览器一次发送超过 20 个文件吗?

标签: php file upload


【解决方案1】:

max-file-uploads 设置得更高(是的,这是一个“新”设置)。

它是PHP_INI_SYSTEM,所以它可以在 php.ini 或 webserver/apache 配置中设置。恐怕没有.htaccess 或“脚本内”访问权限。

【讨论】:

  • 我做到了。但这总是等于 20)
  • ini_set('max_file_uploads', 22); echo ini_get('max_file_uploads');
  • .htaccess : php_value max_file_uploads 100 也无济于事
  • PHP_INI_SYSTEM,所以可以在php.ini或者webserver/apache配置中设置。恐怕没有.htaccess 或“脚本内”访问权限。
【解决方案2】:

最近我遇到了同样的问题,但不幸的是,上述解决方案都不适合我。所以我想我必须在这里分享有效的解决方案

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

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

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

在 PHP.ini 文件中将 suhosin.upload.max_uploads 和 max_file_uploads = 100 设置为 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

【讨论】:

  • 谢谢!这也是我的问题。
【解决方案3】:

PHP 可以发布的数量是有限制的。请参阅 upload_max_filesizemax_file_uploadspost_max_size 指令。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      max_file_uploads = 400

      据我尝试,这是在大多数主机(但不是在 localhost XAMP 等)上覆盖 php.ini 的允许方式

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          第 2 步:找到 ma​​x_file_uploads=20

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

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

          第 5 步:点击停止重启你的 Apache 服务器,然后点击开始等待绿色背景表示 apache 启动成功

          使用您的代码上传文件进行最终测试

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-07-10
              • 2018-03-28
              • 2015-06-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多