我用下面的代码上传文件的时候大概30M以下的文件上传基本没有问题,但是比较大一点的文件(比如超过50M的)上传时显示的全空白,文件大小0KB,也就是上传失败,但没有任何ERROR出现,已经去php.ini里把max_execution_time改成了2400,post_max_size和upload_max_filesize和memory_limit都改了100M,但仍然无法上传50M包括更大的文件,这是怎么回事怎么解决?
<html>
<body><form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="data">Filename:</label>
<input type="file" name="userfile" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form></body>
</html>
<?php
if ($_FILES["userfile"]["error"] > 0)
{
  echo "Error: " . $_FILES["userfile"]["error"] . "<br />";
}
else
{
  echo "Upload: " . $_FILES["userfile"]["name"] . "<br />";
  echo "Type: " . $_FILES["userfile"]["type"] . "<br />";
  echo "Size: " . ($_FILES["userfile"]["size"] / 1024) . " Kb<br />";
  echo "Temp file stored in: " . $_FILES["userfile"]["tmp_name"] . "<br />";
  move_uploaded_file ($_FILES["userfile"]["tmp_name"], "upload/" . $_FILES["userfile"]["name"]);
  echo "Stored in: " . "upload/" . $_FILES["userfile"]["name"];
}
?>

解决方案 »

  1.   

    upload_max_filesize 限定的是上传文件的大小
    post_max_size 限定的是包括上传文件的表单数据的大小
    但需注意的是:限定值不等于实际值,他只是给了个上限。所以都有一个 max 表示最大可用
    服务器上有多个程序在运行,都需要使用内存
    因此分配给当前 php 程序的可用内存可能很小,导致上传失败如果提交的数据大小超过了实际可用内存,那么 $_POST 就是空的(注意不是空数组),自然 $_FILES 也就是空的了
      

  2.   

    $_FILES['file']['error'] 看错误码。