使用 PHP - move_uploaded_file 上传图片失败

Image upload failing using PHP - move_uploaded_file

我一直在搜索堆栈溢出和其他教程,了解如何使用 php 上传文件。下面的脚本一直有效,直到它到达条件为 move_uploaded_file($file_temp, $file_destination) 的 if 语句,此时它回显 "file not uploaded"。

包含 chmod 函数的 if 语句是我尝试将上传文件夹的文件权限更改为 0777(我很确定每个人都可以读写),因为这是许多相关人员的建议堆栈溢出答案。我认为目前问题不是文件权限。

所以基本上我不知道这有什么问题。感谢帮助:)

<form action="upload.php" method="post" enctype="multipart/form-data">
  Your Photo: <input type="file" name="image" />
  <input type="submit" name="submit" value="Submit" />
</form>

<?php
 print_r($_FILES);

 // file properties
 $file_name = $_FILES['image']['name'];
 $file_tmp_name = $_FILES['image']['tmp_name'];
 $file_size = $_FILES['image']['size'];
 $file_error = $_FILES['image']['error'];

 // get the extension of the file
 $file_ext = explode('.', $file_name);
 $file_ext = strtolower(end($file_ext));

 var_dump(file_exists('uploads'));

 // this is false
 if(chmod('uploads', 0777) ){
   echo " booooh";
  }
  else{
    echo "naaah";
   }

 $file_name_new = uniqid('', true) . '.' . $file_ext;
 echo "<br>";
 echo $file_destination = '/uploads/' . $file_name;        

 // this is false too
 if(move_uploaded_file($file_temp, $file_destination)) {
   echo "<br>$file_destination<br>";
   echo "hello world<br>";
 }
 else {
   echo "<br>file not uploaded<br>";
 }

 ?>

你写:

move_uploaded_file( $file_temp, $file_destination );

$file_temp 未在您的脚本中定义。原来的文件路径是$file_tmp_name.

move_uploaded_file( $file_tmp_name, $file_destination );

另请注意,您从不使用 $file_name_new

补充说明:目标路径必须是绝对文件路径:/uploads/目录必须位于目录树的顶层,而不是在文档根目录下。