PHP: move_uploaded_file() не удалось открыть поток: нет такого файла или каталога

Я пытаюсь заставить PHP перемещать загруженный файл из каталога tmp в постоянное место на моем веб-сервере. Это кажется достаточно простым, но я получаю эту ошибку:

Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'

Довольно прямолинейно, правда? Он не может найти папку назначения.

Мой вопрос: Как мне указать желаемый целевой каталог?

Является ли ссылка относительно позиции script на сервере? Или это относительно URL-адреса? Или PHP DOCUMENT_ROOT? Или файловая система ОС? Или что-то еще?

Я не могу найти ответ в документации PHP или даже в любом из похожих вопросов здесь на SO..

Может ли кто-нибудь помочь? Спасибо.

Ответ 1

Простым способом отслеживания пути является определение абсолютного пути в index.php

define ('SITE_ROOT', realpath(dirname(__FILE__)));

Затем просто используйте его как:

move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');

Ответ 2

У меня была такая же проблема с моей загрузкой. См. Мой пример и, возможно, он может вам помочь.

Файл, который я создал, называется "uploads".

$uploads_dir = 'uploads/';
$name = $_FILES['userfile']['name'];
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{       
    //in case you want to move  the file in uploads directory
     move_uploaded_file($_FILES['userfile']['tmp_name'], $uploads_dir.$name);
     echo 'moved file to destination directory';
     exit;
}

Ответ 3

Это из положения script на сервере! И более того, вам нужно иметь права на запись в этой папке:

'static/images/slides/1/1.jpg'

Вместо этого лучше использовать абсолютный путь таким образом:

'C:\UniServer\***\static\images\slides\1\1.jpg

Используйте абсолютный путь.

Ответ 4

$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/";
chown($destination, 0755);
move_uploaded_file($info['tmp_name'], $destination.$info['name']);

Это мое решение, я просто использую mkdir для создания каталога, чтобы поместить мою фотографию, которую я хочу переместить. Пожелайте, чтобы это помогло.