天天看点

xampp php上传大文件,关于php:’move_uploaded_file():无法移动’多个文件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

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文件夹。

您需要授予文件夹读写权限。

如下所述,我已经解决了该问题,并且没有权限。