我对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
ewPage.php on line 15
Error -htmlUpload
这是我的HTML表单:
Enter Page Name:
HTML File:
PHP File:
Submit
和继承人相应的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变量没有附加文件名?
我不能完全确定文档的根目录是什么,但是我可以使用xampp的常规安装(如果有帮助的话); 它根本不在线。
可能重复的stackoverflow.com/questions/21035320/
我已经尝试了该问题的修复方法:为move_uploaded文件添加@; 并使用目录分隔符。 但是我遇到了问题:注意:未定义的索引:第10行的C: xampp htdocs newPage.php中的p错误-htmlUpload; 这也不对。
您不应将@放在任何位置,因为它将阻止错误的出现。 您需要显示错误才能显示错误。
知道的确很不错,但是无论哪种方式,该问题中描述的修复对我而言均不起作用。
是否创建此$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']);
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";
}
同样的错误; 它创建目录,但是不会将文件移出temp文件夹。
您需要授予文件夹读写权限。
如下所述,我已经解决了该问题,并且没有权限。