2013-12-19 38 views
-1

我知道這有點鈍,但以下是我現在關注的3個小時的主要焦點,我需要幫助。 我已檢查文件權限(777)。而且,也許是最煩人的部分,它昨天工作! 「if」語句沒有問題,因爲我已經檢查了它,通過迴應一個語句得到move_uploaded_file()。我在某些時候得到一個錯誤,但我認爲這傳遞,錯誤是:PHP move_uploaded_file()error

[Thu Dec 19 03:53:06 2013] [error] [client 46.208.50.146] File does not exist: /some_directory/[object File], referer: http://my_domain/ 

代碼:

$rand_string = ""; 
$rand_file_string = ""; 
$characters = 'abcdefghijklmnopqrstuvwxyz'; 
for ($i = 0; $i < 30; $i++) { 
    $rand_string .= $characters[rand(0, strlen($characters) - 1)]; 
} 
for ($i = 0; $i < 30; $i++) { 
    $rand_file_string .= $characters[rand(0, strlen($characters) - 1)]; 
} 
$fileNameMain = $rand_file_string . "-" . str_replace(" ", "", $_FILES["input_mainpic"]["name"]); 
$fileTmpLoc = $_FILES["input_mainpic"]["tmp_name"]; 
$pathAndName = "../../../../../my_domain.com/htdocs/southwye/upload/" . $rand_file_string . "-" . $fileNameMain; 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["input_mainpic"]["name"]); 
$extension = strtolower(end($temp)); 
if ((($_FILES["input_mainpic"]["type"] == "image/gif") 
|| ($_FILES["input_mainpic"]["type"] == "image/jpeg") 
|| ($_FILES["input_mainpic"]["type"] == "image/jpg") 
|| ($_FILES["input_mainpic"]["type"] == "image/pjpeg") 
|| ($_FILES["input_mainpic"]["type"] == "image/x-png") 
|| ($_FILES["input_mainpic"]["type"] == "image/png")) 
&& ($_FILES["input_mainpic"]["size"] < 2000000) 
&& in_array($extension, $allowedExts)){ 
    if ($_FILES["input_mainpic"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["input_mainpic"]["error"] . "<br>"; 
    } 
    else 
    { 
    if (file_exists($rand_file_string . $_FILES["input_mainpic"]["name"])) 
     { 
     echo $rand_file_string . $_FILES["input_mainpic"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($fileTmpLoc, $pathAndName); 
     } 
    } 
    } 

請不要讓錯誤的想法......我有實際看着這個,但已經來了!代碼運行的文件具有777個權限。我試圖使用不同的目錄,並給它所需的權限,但沒有發生任何事情。

我得到絕對沒有從PHP反饋(從我假設在代碼中沒有錯誤)

+0

$ fileTmpLoc = $ _FILES [「input_mainpic」] [「tmp_name」]; –

回答

2

我想你所指的臨時文件的位置是錯誤的

,而不是

$fileTmpLoc = "/temp/" . $_FILES["input_mainpic"]["tmp_name"]; 

u必須使用

$fileTmpLoc = $_FILES["input_mainpic"]["tmp_name"]; 
+0

對不起,在嘗試不同的目錄後,我沒有更改代碼 –

0

假定你上傳的文件路徑文件夾unabl e到達您的文件夾路徑,我已經重寫爲如下,

通過手動添加 "../../../../../my_domain.com/htdocs/southwye/upload/";下面提到的代碼直接檢索站點路徑。這可能是文件上傳錯誤的原因

$filePath = realpath(dirname(__FILE__)); 
    $rootPath = realpath($_SERVER['DOCUMENT_ROOT']); 
    $htmlPath = str_replace($root, '', $filePath); 
    $fileNameMain = $rand_file_string . "-" . str_replace(" ", "", $_FILES["input_mainpic"]["name"]); 
    $pathAndName = $htmlPath."/upload/" . $rand_file_string . "-" . $fileNameMain; 
    $fileTmpLoc = $_FILES["input_mainpic"]["tmp_name"]; 
+0

我不知道這裏有什麼在做什麼;什麼目錄是「realpath(dirname(__ FILE__));」檢索? –