目录上传php有些dirs工作,有些则没有

时间:2013-12-26 15:45:07

标签: php file-upload directory

我有两个问题,第一个问题:

我正在尝试上传特定文件夹中的所有文件,并使用PHP将其移动到用户的私人文件夹中。我目前的代码:

$count = 0;
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  foreach ($_FILES['files']['name'] as $i => $fname) {
    if (strlen($_FILES['files']['name'][$i]) > 1) {
      if (move_uploaded_file($_FILES['files']['tmp_name'][$i],
           'users/' . $currentUser . '/uploads/' . $fname)) {
        $count++;
      }
    }
  }
}

<div id="divUpload">
  <form method="post" enctype="multipart/form-data">
    <input type="file" name="files[]" id="files" 
      mozdirectory="" directory="" webkitdirectory="">
    <input class="button" type="submit" value="Upload" />
  </form>
</div>

稍后会使用$ count来检查是否上传了任何文件。

此代码在我的localhost系统上完美运行,但它似乎不能在某些文件夹上的ubuntu服务器上运行。例如:内部有20个图像的文件夹工作得很好,而只有1个图像的文件夹可能已经给我一个错误。

我已更新我的php.ini文件并进行了以下更改:

upload_max_filesize = 199M
max_file_uploads = 100

我将是唯一使用此网站的人,只能从我自己的网络连接到它,所以不要担心安全性。我的www-data用户也可以完全访问我服务器上的文件夹,所以我认为这也不是一个权限。

当我尝试使用php.ini-development调试我的代码时,它会给我错误

Warning: Invalid argument supplied for foreach() in /var/www/upload.php on line 14

当我尝试var_dump()它时,它返回NULL,好像根本没有上传任何文件......我在某个地方犯了错误吗?我很困惑,因为它有时没有任何问题......

第二个问题:

我在某处读到php.ini中的upload_max_filesize受memory_limit的限制。这是真的?

我正在制作的这个项目是一个家庭NAS,我设法让我的代码顺利运行,总内存限制为200M。这是否意味着我将无法上传大于200MB的文件???为什么这个在我的localhost上工作呢? (它使用相同的200M memory_limit约束)

谢谢,S

1 个答案:

答案 0 :(得分:2)

忘了增加我的

post_max_size

在php.ini中也是如此。这解决了这个问题!很奇怪PHP虽然没有给出明确的信息。

S上。