Не работает move_uploaded_file() (ошибок нет)

Не могу загрузить фото на веб-сервер

$_FILES['file']['error'] выдает 0, array выводит всю информацию о изображении. Скрипт выполняется без ошибок, в БД записывается новое имя файла, но сам файл не появляется в папке.

К скрипту как я понял вопросов нет, к вебсерверу тоже (rename() прекрасно работает, значит проблема не с правами)

Код

<?php
session_start();
require_once 'connect.php';
$id = $_SESSION['user']['id'];

if (isset($_POST['submit']))
{
    $file = $_FILES['file'];
    $fileName = $file['name'];
    $fileType = $file['type'];
    $fileTempName = $file['tmp_name'];
    $fileError = $file['error'];
    $fileSize = $file['size'];
    $fileExt = explode('.', $fileName);
    $fileActualExt = strtolower(end($fileExt));
    $allowed = array("jpg", "jpeg", "png", "pdf");

    if (in_array($fileActualExt, $allowed))
    {
        if ($fileError === 0)
        {
            if ($fileSize < 500000)
            {
                $fileNameNew = uniqid('', true).".".$fileActualExt;
                $fileDestination = '../avatars/'.$fileNameNew;
                move_uploaded_file($fileNameNew, $fileDestination);
                mysqli_query($connect, "UPDATE `users` SET `img` = '$fileNameNew' WHERE `id` = '$id'");
                header("Location: ../profile.php");
            }
            else
            {
                $_SESSION['message'] = "Файл слишком большой!";
                header('Location: ../profile.php');
                exit();
            }
        }
        else
        {
            $_SESSION['message'] = "Возникла ошибка при загрузке файла!";
            header('Location: ../profile.php');
            exit();
        }
    }
    else
    {
        $_SESSION['message'] = "Выберите файл формата JPG/PNG/JPEG!";
        header('Location: ../profile.php');
        exit();
    }
}

Права на директорию /var/www/

drwxr-xr-x  3 ubant www  4096
drwxr-xr-x 14 root  root 4096
drwxr-xr-x  3 ubant www  4096

php.ini

file_uploads = On
upload_max_filesize = 10M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = On
default_socket_timeout = 60

Ответы (1 шт):

Автор решения: newman

move_uploaded_file (в отличии от rename) проверяет настройку open_basedir и поэтому может не копировать файл, так как место назначения не входит в эту настройку.

Плюс в описании move_uploaded_file написано что эта функций проверяет действительно ли исходный файл был загружен через запрос POST. Возможно в вашем случае эта проверка не проходит и файл не копируется из-за этого.

→ Ссылка