'move_uploaded_file(): Unable to move' 多个文件 XAMPP
'move_uploaded_file(): Unable to move' Multiple Files XAMPP
我是 PHP 的新手,我正在尝试制作一个表单以允许用户上传一个 html 文件、一个 php 文件并给它一个标题。
应该使用标题创建一个新文件夹来移动两个文件。
目前它创建的目录没有问题,但是它不能从 tmp 目录中移动上传的文件。
并给我以下错误:
Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php2152.tmp' to 'C:\xampp\htdocs\var\uploads\pages\Instagram' in C:\xampp\htdocs\newPage.php on line 15
Error -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 目录中的另一个文件夹中。这与同时发布两个文件有关吗?
编辑:
所以我一直在添加一些回声以查看发生了什么;这似乎是基本名称的问题。
回显
的结果时
$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 没有附加文件名?
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";
}
问题是一个非常简单的错位括号。
包含错误的旧代码:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
没有错误的新代码:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload']['name']);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
我是 PHP 的新手,我正在尝试制作一个表单以允许用户上传一个 html 文件、一个 php 文件并给它一个标题。
应该使用标题创建一个新文件夹来移动两个文件。 目前它创建的目录没有问题,但是它不能从 tmp 目录中移动上传的文件。 并给我以下错误:
Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php2152.tmp' to 'C:\xampp\htdocs\var\uploads\pages\Instagram' in C:\xampp\htdocs\newPage.php on line 15 Error -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 目录中的另一个文件夹中。这与同时发布两个文件有关吗?
编辑: 所以我一直在添加一些回声以查看发生了什么;这似乎是基本名称的问题。
回显
的结果时$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 没有附加文件名?
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";
}
问题是一个非常简单的错位括号。
包含错误的旧代码:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
没有错误的新代码:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload']['name']);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);