‘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>

и вот соответствующий php:


$ dir = getcwd (). '/ Вар / добавление / страницы /';
$ pageName = $ dir. $ _POST [ 'Pagename'];
if (mkdir ($ pageName, 0777, true)) {
$ filepathHTML = $ pageName. Базовое имя ($ _ FILES [[ 'имя' 'pageHTMLUpload']]);
$ filepathPHP = $ pageName. Базовое имя ($ _ FILES [ 'pagePHPUpload'] [ 'имя']);
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 ();
}
еще {
echo "Ошибка -phpUpload";
}
}
еще {
echo "Ошибка -htmlUpload";
}
}
еще {
echo "Ошибка -pagename";
}

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

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

повторяя результат

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

Я получил:

HTML: C: \ XAMPP \ HTDOCS / вар / добавления / страницы / Instagram /
PHP: C: \ XAMPP \ HTDOCS / вар / добавления / страницы / Instagram / Gallery.php

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

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

-1

Решение

should be used this code.


$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['pagePHPUpload']['tmp_name'], $filepathPHP ))
{
$stmt = $conn->prepare("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)");
$stmt->bind_param($pageName, $filepathHTML, $filepathPHP);
$stmt->execute();
}
else{
echo "Error -phpUpload";
}
}
else{
echo "Error -htmlUpload";
}
}
else{
echo "Error -pagename";
}
0

Другие решения

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

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

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

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

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

По вопросам рекламы [email protected]