【问题标题】:How to change root permission for uploading files in apache with php as backend language? [duplicate]如何更改以 php 作为后端语言在 apache 中上传文件的 root 权限? [复制]
【发布时间】:2024-01-22 17:21:01
【问题描述】:
<?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 上传任何文件时,我遇到了一个错误,上面写着

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

我什至尝试通过

更改文件夹权限

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

但是,没有任何改变。

【问题讨论】:

  • 你能显示你用来复制文件的代码吗?
  • new-project 下是否有一个名为uploads 的文件夹?如果没有,那么您必须先创建它,然后才能将文件移动到新位置。为什么不使用move_uploaded_file() 而不是copy()$_FILES['file']['name'] 只是文件的原始名称。临时上传文件的位置可以在$_FILES['file']['tmp_name']下找到
  • 我在new-project下有一个名为'uploads'的文件夹,我也更改了文件夹的权限。
  • @user3620928 - 请参阅我的最后一条评论。您应该使用tmp_name 而不是name
  • 好的,我已经修改了上传文件的代码,但是无法解决问题。

标签: php apache xampp


【解决方案1】:

配置“php.ini”文件

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

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

file_uploads = On

【讨论】:

  • 是的,默认设置为“开启”。
  • 还要检查最大上传限制。
【解决方案2】:

由于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

【讨论】:

    最近更新 更多