我不能上传大于10 MB的文件,但我不明白为什么?

时间:2017-08-07 22:06:07

标签: php

我通过PHP写了一个文件上传脚本,现在我有一个问题,我无法上传8-10 MB左右的大文件,所以你们有什么建议吗?

<?php
  ini_set('post_max_size', '8128M');
  ini_set('upload_max_filesize', '8128M');
  header("Content-Type: text/plain");
  $key = "M8hqvvaCbMGXP4GycfDNc6CUckYdETdPEkcdKu9QaUEM52jCZnrnrKkh8B9hVZGN";
  $uploadhost = "https://i.sandrotracker.biz/";
  $foldername = "../";
  if ($_SERVER["REQUEST_URI"] == "/robot.txt") { die("User-agent:   *\nDisallow: /"); }
  if (isset($_POST['k'])) {
if ($_POST['k'] == $key) {
    $target = getcwd() . "/" . $foldername . "/" . basename(basename($_FILES['d']['name']));
    if (move_uploaded_file($_FILES['d']['tmp_name'], $target)) {
        $md5 = md5(microtime(true) . md5_file(getcwd() . "/" . $foldername . "/" . basename($_FILES['d']['name'])));
        rename(getcwd() . "/" . $foldername . "/" . basename($_FILES['d']
['name']), getcwd() . "/" . $foldername . "/" . $md5 . "." . 
end(explode(".", 
  $_FILES["d"]["name"])));
        echo $uploadhost . $md5 . "." . end(explode(".", $_FILES["d"]
       ["name"]));
        exit;
    } else {
      print_r($_FILES);
      exit;
    }
}
} 
echo "invalid_request";
?> 

1 个答案:

答案 0 :(得分:0)

问题是8128M(8,522,825,728字节)超过了32位整数限制(2,147,483,647)。有关基本说明,请参阅https://en.wikipedia.org/wiki/2,147,483,647

您可以通过以下两种方式解决此问题:

  1. 转到64位php设置。
  2. 如果您不需要大于2GB的上传,请更改:
  3. ini_set('post_max_size', '8128M');
    ini_set('upload_max_filesize', '8128M');
    

    为:

    ini_set('post_max_size', '2147483647');
    ini_set('upload_max_filesize', '2147483647');
    
相关问题