Php mkdir 0777并在上传时重命名图像

时间:2014-04-11 16:33:35

标签: php

我在这里遇到一些问题。我正在尝试根据uploads文件夹中的用户名创建一个新文件夹。它没有给予和读/写权限,然后在我有这个功能之前它重命名图像(我怎么能保留原始名称)。

 $username = $_POST['username'];

 $uploads_dir = 'uploads/' . $username;
 if (!is_dir($uploads_dir)) {
   mkdir($uploads_dir, 0777);
 }

 $count = 1;
 foreach ($_FILES["userfile"]["error"] as $key => $error) {
 if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
    $name = $_FILES["userfile"]["name"][$key];
    $uploadfile = "$uploads_dir/$name";
    $ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3));
    if (preg_match("/(jpg|gif|png|bmp)/",$ext)){
        $newfile = "$uploads_dir/".str_pad($count++,2,'0',STR_PAD_LEFT).".".$ext;
        if(move_uploaded_file($tmp_name, $newfile)){
            $success++;
        }else{
            echo "Couldn't move file: Error Uploading the file. Retry after sometime.\n";
            $fail++;
        }
    }else{
        echo "Invalid Extension.\n";
        $fail++;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

目录通常是755,虽然取决于PHP的运行方式(作为您/所有者,在您的组中,或作为随机用户/世界),它可能必须是775甚至777才能使您的程序成为能够写入目录。大概这是在服务器上。尝试755,然后是775,最后是777.许多服务器禁止“世界可写”文件或目录,并在xx6或xx7权限上给出500错误。