天天看點

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檔案夾。

您需要授予檔案夾讀寫權限。

如下所述,我已經解決了該問題,并且沒有權限。