Я новичок в 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-файлу не прикреплено имя файла?
$pageName
создан? - person hungrykoala   schedule 30.05.2018