【问题标题】:File permissions being set incorrectly when uploading files from the admin panel从管理面板上传文件时文件权限设置不正确
【发布时间】:2012-02-02 22:14:16
【问题描述】:

我从另一个开发人员那里继承了一些代码,我正在尝试解决文件权限问题。基本上,当从自定义管理面板上传文件时,它们被赋予了非常奇怪的 363 权限级别,而不是 755 或 644。我联系了主机,他们说文件和文件夹权限存在问题。我无法通过 FTP 手动更改文件权限。我得到了照顾。我要做的是在上传文件后更改文件权限。它显示成功,但是当我通过 FTP 检查文件时,它仍然是 363。我的代码是错误的,还是有更简单的方法来解决这个问题。任何帮助,将不胜感激。要遵循的代码:

    function fileUpload($destination, $filename, $codeupname="case")
    {

      //  set_time_limit(0); 
    //  ini_set("post_max_size", "30M");
    //  ini_set("upload_max_filesize", "30M");
    //  ini_set("memory_limit", -1 );
        if ($_FILES[$filename]['name'] !="")
        {
            $unique_id_query = strtoupper(substr(md5(uniqid(rand(), true)), 0 ,16));
            $unique_add      = $unique_id_query;
            $unique_name     = $destination.$codeupname.$unique_add;
            //chmod($destnation,"777");
            if($_FILES[$filename]["error"] > 0)
            {
                //echo $_FILES[$filename]["error"]." - error";
                return -1;      // file error 
            }
            else
            {
                $uploadedfile = $_FILES[$filename]['tmp_name'];
                $destination1 = $unique_name.$_FILES[$filename]['name'];
                $path         = "../".$destination1;

                $result       = move_uploaded_file($uploadedfile, $path);
                if(!$result)
                {
                    return -1;
                }
                else
                {
                    echo $result;
                    //SET PROPER READ PERMISSIONS
                    $path2 = "/home/content/f/a/c/faccounting/html/".$destination1;
                    echo "PATH: ".$path2."<br />";
                    $result2 = chmod($path2, "0755");
                    echo "Result: ".$result2;
                    return $destination1; // returning image name and path
                } 
            }
        }
        else
        {
            return -1; // no file persent 
        }
    }

【问题讨论】:

  • 您是否检查了您要上传到的文件夹的权限?

标签: php permissions upload chmod


【解决方案1】:

chmod 期望第二个参数是 int 并且您正在传递字符串。 "0755" 转换为 int 是 755,而您想要 0755 它是整数值的八进制表示 - 493。

所以你需要改变

 $result2 = chmod($path2, "0755");

进入

 $result2 = chmod($path2, 0755);

【讨论】:

  • 太棒了!一个简单的解决方案!确实为我节省了一些挫败感。
猜你喜欢
  • 1970-01-01
  • 2014-10-23
  • 2013-02-14
  • 1970-01-01
  • 2011-02-20
  • 2011-04-08
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
相关资源
最近更新 更多