如何使用php作为后端语言更改apache上传文件的root权限?

时间:2015-08-12 03:45:18

标签: php apache xampp

<?php
    include_once 'database/dbconnect.php';
    if(isset($_POST['btn-upload'])){    

        $file = rand(1000,100000)."-".$_FILES['file']['name'];
        $file_loc = $_FILES['file']['tmp_name'];
        $file_size = $_FILES['file']['size'];
        $file_type = $_FILES['file']['type'];
        $folder="uploads/";

        move_uploaded_file($file_loc,$folder.$file);
        $sql="INSERT INTO upload(file,type,size)     VALUES('$file','$file_type','$file_size')";
        mysql_query($sql); 
    }
?>
<?php
    if( $_FILES['file']['name'] != "" ){
        copy( $_FILES['file']['name'], "uploads/" ) or 
            die( "Could not copy file!");
    }
    else{
        die("No file specified!");
    }
?>

当我尝试使用xampp上传任何文件时,我正面临一个错误,上面写着

  

警告:copy(first.pdf):无法打开流:第4行的/opt/lampp/htdocs/new-project/upload.php中没有此类文件或目录   无法复制文件!

我甚至尝试通过

更改文件夹权限
  

sudo chmod -R 755 / opt / lampp / htdocs / new-project /

但是,没有任何改变。

2 个答案:

答案 0 :(得分:0)

配置“php.ini”文件

首先,确保将PHP配置为允许文件上传。

在“php.ini”文件中,搜索file_uploads指令,并将其设置为On:

file_uploads = On

答案 1 :(得分:0)

由于name是原始名称而不是上传文件的路径,您应该使用tmp_name代替:

// check so file is set and contains no error
if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
    $destination = 'uploads/' . $_FILES['file']['name'];

    // use move_uploaded_file() instead of copy()
    move_uploaded_file($_FILES['file']['tmp_name'], $destination);
}
else {
    die("No file specified!");
}

如果error不等于0,您可以查看此链接后出现的错误类型:File upload errors