Я довольно новичок в PHP, я пытаюсь создать форму, позволяющую пользователю загружать html-файл, php-файл и присваивать ему название.
Следует использовать заголовок, чтобы создать новую папку для перемещения двух файлов.В настоящее время он создает каталог без проблем, однако он не может переместить загруженный файл из каталога tmp.и выдает мне следующую ошибку:
Предупреждение: move_uploaded_file (): невозможно переместить 'C: \ xampp \ tmp \ php2152.tmp' в 'C: \ xampp \ htdocs \ var \ uploads \страницы \ 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() . '/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.Это связано с одновременной публикацией двух файлов?
edit: Итак, я добавил несколько эхо, чтобы увидеть, что происходит;и кажется, что это проблема с базовым именем.
при отражении результата
$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.
Обе мои переменные filepath определены в одном и том же процессе, почему к HTML-переменной не прикреплено имя файла?