2013-12-19 48 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__));”检索? –