使用move_uploaded_file()进行php上传失败

时间:2013-07-20 03:49:12

标签: php

我写php上传文件并扫描目录以显示它们作为链接,scaning directoy工作正常我可以看到我在目录中创建的文本文件,但我只是无法将本地文件移动到所需的目录。执行后没有文件出现。

我认为问题可能包含在这一行中:

move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload".$_FILES["file"]["name"]);

我真正想要的是将图像上传到/ var / www / BlueTapeLogin / upload中的目录 我的php文件位于/var/www/BlueTapeLogin/upload_image.php 如何更改代码以使其工作?提前谢谢。

请参阅我的完整代码:

<html>
<head>
<?php
try
  {

if (!empty($_POST["delete"])){
$delete=$_POST["delete"];
echo"we have the command delete this file:";
echo $delete;
$file = "upload/".$delete;
echo "/n***************";
echo "you want delete :";
echo $file;
echo "***************";
if (!unlink($file))
  {
  echo ("Error deleting $file");
  }
else
  {
  echo ("Deleted $file");


  }

}else{}
}catch(Exception $e)
  {
  echo 'Message: ' .$e->getMessage();
  }

?>
 <?php
move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload".$_FILES["file"]["name"]);
 ?>

 <?php
$dir=scandir("/var/www/BlueTapeLogin/upload") ;
for($j=0;$j<count($dir);$j++){
        echo $dir[$j];
        echo"\n";
        $target = $dir[$j]; // This is the file that already exists
        $link = $dir[$j]; // This the filename that you want to link it to
        echo "<a href=upload/".$link.">".$link."</a>";
}

 ?>
</head>
<body>
<form action="upload_image.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit"><br>


<label for="file">Delete</label>
<input type="text" name="delete" id="delete"><br>
<input type="submit" name="submit" value="Submit">



</form>
 <a href="http://localhost/front2.php">logout</a>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

你错过了upload和文件名之间的目录分隔符,它应该是:

move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/BlueTapeLogin/upload/".$_FILES["file"]["name"]);

您显示的权限表示只有root可以写入该目录,但Web服务器可能正在使用像user-user这样的用户ID。您需要将目录的所有权更改为Web服务器用户标识。这必须由服务器管理员完成。

更有可能的是,已经允许Web服务器写入另一个目录。服务器管理员应该能够告诉您使用哪个目录。

答案 1 :(得分:0)

检查用户在该目录中上传的权限,并尝试简化。只需将文件上传到其他目录,看它是否正常工作,而不是逐一检查您的代码。

检查返回值,检查是否发出警告

返回值

成功时返回TRUE。

如果filename不是有效的上传文件,则不会执行任何操作,move_uploaded_file()将返回FALSE。

如果filename是有效的上传文件,但由于某种原因无法移动,则不会执行任何操作,move_uploaded_file()将返回FALSE。此外,还会发出警告。