PHP上传问题获取错误0但move_uploaded_file()返回false

MrB*_*MrB 4 php

PHP上传问题获取错误0但move_uploaded_file()返回false.当我打印出$ _FILES时,我得到了

Array ( [uploadedfile] => Array ( [name] => flashlog.txt [type] =>
text/plain [tmp_name] => /tmp/php0XYQgd [error] => 0 [size] => 3334 ) ) 
Run Code Online (Sandbox Code Playgroud)

我正在使用基本的html/php教程让我相信它可能是服务器问题.我检查php.ini并有upload_max_filesize:2M,post_max_size:8M.所以我真的很困惑,因为我认为0的错误告诉我它是成功的.

我正在使用的代码是

<?php

// Where the file is going to be placed 
$target_path = 'Test/';

$target_path = $target_path. basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
{
 echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
 " has been uploaded";
} 
else
{
 echo "There was an error uploading the file, please try again!";
 echo print_r($_FILES);
}
?>
Run Code Online (Sandbox Code Playgroud)

sta*_*san 9

move_uploaded_file() 如果无法写入目标目录,也将返回false.

我看到处理上传的大多数PHP代码都会跳过检查过程中的一些主要部分.上传代码应执行以下步骤:

  1. 检查是否$_FILES[]存在并填充正确的条目.
  2. 查看error字段以查看它是否到达服务器 - 很多代码只检查它是否为0,这意味着它无法向用户返回任何正确的错误.
  3. 确保您需要移动文件的目的地确实存在.
  4. 打电话move_uploaded_file()去做 - 太多只是做一个文件副本,绕过安全检查move_uploaded_file().

这些是不连续的步骤:正如您似乎看到的那样,实际上传可以成功,但move_uploaded_file()可能会失败.你的问题假定如果后者失败,那么前者也失败了.

哦是的:打电话move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $destination).使用$_FILES['uploadedfile']['name']不起作用.