上传文件/Apache ::无法打开流:CentOS 上的权限被拒绝

上传文件/Apache ::无法打开流:CentOS 上的权限被拒绝

将文件上传到服务器总是出现此错误,尽管我尝试了网络上针对此问题的所有解决方案,但无论如何我仍然收到此错误:

警告:move_uploaded_file(/home/safaa/uploads/d.txt):无法打开流:/var/www/html/Administration/newEmptyPHP.php 第 47 行中的权限被拒绝

警告:move_uploaded_file():无法将“/tmp/php6qK4Df”移动到/var/www/html/Administration/newEmptyPHP.php 第 47 行中的“/home/safaa/uploads/d.txt”

这是我的 HTML 代码:

     <form id="file_to_upload" name="file_to_upload" enctype="multipart/form-data" action="newEmptyPHP.php" method="post" >
            <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
            Browse for a root certificate to upload:
            <input type="file" name="uploaded_file">
             <input type="submit" value="Upload It Now" onclick="$('#file_to_upload').submit();">
    </form>

我的PHP代码:

 $file_name = $_FILES["uploaded_file"]["name"];

//User can upload only till 100kb file size.
    $file_tmp_name = $_FILES["uploaded_file"]["tmp_name"];
    $upload_path = "/home/safaa/uploads/" . $file_name;
//function for upload file
            if (move_uploaded_file($file_tmp_name, $upload_path)) {
                echo "Successful<BR>";
            }

我尝试过以下解决方案,它们都是我在网络论坛和 stackoverflow 问答上找到的:

  1. 将 /tmp/ 和 /uploads/ 的权限更改为 777 和 0777 。“它不起作用”
  2. 在 php.ini 中,安全模式已关闭并且 file_uploads 已打开
  3. SELinux 已禁用 :: getenforce 已将其禁用
 drwxrwxrwx.   6 nobody  root      4096 Jul 20 13:06 tmp

 drwxrwxrwx   2 nobody safaa  4096 Jul 17 15:17 uploads

两者都不起作用。

答案1

您对 /tmp 共享的权限不正确。

请尝试以下操作:chmod a+rwxt /tmp /var/tmp

答案2

您收到错误“无法打开流:拒绝访问”。该怎么办?

  1. 找出 php 错误代码。将此代码放在 php 的开头。
    ini_set ('error_reporting', E_ALL); ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1);
  1. 该文件夹必须是可访问的 777。检查一下。
  2. 该标签必须具有enctype="multipart/form-data" method="post"属性。
    <form enctype = "multipart / form-data" method = "post">
  1. 完全打开并查看服务器上的$_FILES数组。
    print_r ($ _FILES);
  1. 在客户端打开并查看$_FILES数组。
    file = document.getElementById ("get_avatar"). files [0]; parts = file.name.split ('.');
   var a = file.size; var b = parts.pop (); var c = file.type; alert (a + b + c);
  1. 检查用户和用户组对该目录的权限。
    cd / var / www / your_site / user
    ls -l

更多细节:在此处输入链接描述

相关内容