PHP move_uploaded_file没有写入具有所有写入权限的目录

时间:2014-01-03 11:46:52

标签: php file-upload

我正在自学PHP,我正在尝试在PHP中创建一个用于上传文件的函数。但是,move_uploaded_file拒绝为我工作。以下是我无法工作的功能。

此函数测试mimetype是否正确,文件大小是否太大以及图像尺寸。然后它为文件创建一个随机名称,将其移动到正确的文件夹,并将DB中的路径更改为头像。

   public function updateAvatar($avatar)
   {
    global $db; //PDO DB connection

    $available_mimes = array(
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpg',
        'iejpg' => 'image/pjpeg'); // Define an array with allowed filetypes

    $image_info = getimagesize($avatar["tmp_name"]);
    $image_width = $image_info[0];
    $image_height = $image_info[1]; // Retrieve the image size

    //Test if the uploaded avatar has the desired type, file size and dimensions.
    if (in_array($avatar['type'], $available_mimes) && $avatar['size'] >= self::MAX_AVATAR_SIZE && $image_height <= 150 && $image_width <= 150)
    {
        $timeInSeconds = round(microtime(true) * 1000);
        $filename = md5($_SESSION['username'] . $timeInSeconds) . ".jpg"; //Create a random filename with the username and time in milliseconds hashed.

        if (move_uploaded_file($avatar['tmp_name'], "/Content/Avatar/" . $filename)) //Try to place the file in a folder
        {
            $statement = $db->prepare("UPDATE users SET avatar = :avatar WHERE id = :id");
            $result = $statement->execute(array('avatar' => "Content/Avatar/" . $filename,
                'id' => $_SESSION['id'])); //update filepath in DB
            return $result;
        } else
        {
            return false;
        }
    } else
    {
        return false;
    }
}

函数move_uploaded_file始终返回false。我已经设置了文件夹的权限,以便为每个人使用FileZilla写入权限。它没有帮助。我究竟做错了什么?除了可怕的代码。

1 个答案:

答案 0 :(得分:0)

函数move_uploaded_file使用来自root的路径,而不是webserver root。我忘了在文件路径中包含/ var / www /。