'move_uploaded_file(): невозможно переместить' несколько файлов XAMPP

Я новичок в PHP, я пытаюсь создать форму, позволяющую пользователю загружать html-файл, php-файл и давать ему название.

Он должен использовать заголовок для создания новой папки для перемещения двух файлов. В настоящее время он создает каталог без проблем, однако не может переместить загруженный файл из каталога tmp. и дает мне следующую ошибку:

Предупреждение: move_uploaded_file(): невозможно переместить «C:\xampp\tmp\php2152.tmp» в «C:\xampp\htdocs\var\uploads\pages\Instagram» в C:\xampp\htdocs\newPage.php на строка 15 Ошибка -htmlUpload

вот моя HTML-форма:

<form action="newPage.php" method="post" enctype='multipart/form-data'>
    <label for="pageName">Enter Page Name: </label>
    <input type="text" name="pageName" id="pageName" />
    <br />
    <label for="pageHTMLUpload">HTML File: </label>
    <input type="file" name="pageHTMLUpload" id="pageHTMLUpload" />
    <br />
    <label for="pagePHPUpload">PHP File: </label>
    <input type="file" name="pagePHPUpload" id="pagePHPUpload" />
    <br />
    <center>
        <button class="btn btn-dark" type="submit">Submit</button>
    </center>

and heres the corresponding php:


    $dir = getcwd() . '/var/uploads/pages/';
    $pageName = $dir . $_POST['pageName'];
    if(mkdir($pageName, 0777, true)){
      $filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
      $filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
      if(move_uploaded_file($_FILES['pageHTMLUpload']['tmp_name'], "$filepathHTML")){
        if(move_uploaded_file($_FILES['pageHTMLUpload']['tmp_name'], "$filepathHTML")){
          $stmt = $conn->prepare("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)");
          $stmt->bind_param('sss', $pageName, $filepathHTML, $filepathPHP);
          $stmt->execute();
        }
        else{
          echo "Error -phpUpload";
        }
      }
      else{
        echo "Error -htmlUpload";
      }
    }
    else{
      echo "Error -pagename";
    }

Я читал, что эта проблема может быть вызвана неправильными разрешениями, однако я могу успешно загружать файлы из другого скрипта в другую папку в каталоге var/uploads. Это связано с публикацией двух файлов одновременно?

редактировать: Итак, я добавил несколько эхо, чтобы увидеть, что происходит; и, похоже, проблема с базовым именем.

при повторении результата

$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);

Я получил:

HTML:C:\xampp\htdocs/var/uploads/pages/Instagram/ PHP:C:\xampp\htdocs/var/uploads/pages/Instagram/Gallery.php

Судя по всему, он пытается переместить файл tmp на страницы в качестве каталога Instagram, который не работает, однако PHP содержит базовое имя файла, и я предполагаю, что это то, что должен делать HTML.

Обе мои переменные пути к файлу определены в одном и том же процессе, почему к HTML-файлу не прикреплено имя файла?


person Isaac Manzi    schedule 29.05.2018    source источник
comment
Я не совсем уверен, что такое корень документа, однако я использую стандартную установку xampp, если это вообще помогает; его вообще нет в сети.   -  person Isaac Manzi    schedule 30.05.2018
comment
возможный дубликат stackoverflow.com/questions/21035320/   -  person Plixxer    schedule 30.05.2018
comment
Я пробовал исправления в этом вопросе: добавление @ для файлов move_uploaded; и используя разделитель каталогов. однако я получаю проблему: Обратите внимание: Неопределенный индекс: p в C:\xampp\htdocs\newPage.php в строке 10 Ошибка -htmlUpload; что тоже не правильно.   -  person Isaac Manzi    schedule 30.05.2018
comment
Вы не должны нигде ставить @, так как это предотвратит появление ошибок. Вам нужны ошибки, чтобы показать вам, что не так.   -  person hungrykoala    schedule 30.05.2018
comment
Что ж, это действительно здорово знать, но в любом случае исправления, описанные в этом вопросе, у меня не сработали.   -  person Isaac Manzi    schedule 30.05.2018
comment
Этот каталог $pageName создан?   -  person hungrykoala    schedule 30.05.2018
comment
Да, каталог создан   -  person Isaac Manzi    schedule 30.05.2018


Ответы (2)


Проблема заключалась в очень простой неуместной скобке.

Старый код, включая ошибку:

 $filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
 $filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);

Новый код без ошибок:

$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload']['name']);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
person Isaac Manzi    schedule 30.05.2018

person    schedule
comment
Та же ошибка; он создает каталог, однако не перемещает файлы из временной папки. - person Isaac Manzi; 30.05.2018
comment
как указано ниже, я уже исправил проблему, и это были не разрешения. - person Isaac Manzi; 01.06.2018