При загрузке файлов из админ-панели неправильно заданы права доступа к файлам - PullRequest
0 голосов
/ 03 февраля 2012

Я наследую некоторый код здесь от другого разработчика и пытаюсь решить проблему с правами доступа к файлам.По сути, когда файлы выгружаются из пользовательской панели администратора, им дают дико странный уровень разрешений 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 
        }
    }

1 Ответ

3 голосов
/ 03 февраля 2012

chmod ожидает, что второй аргумент будет int, и вы передаете строку. "0755", преобразованное в int, равно 755, в то время как вы хотите 0755, которое является восьмеричным представлением целочисленного значения - 493.

Так что вам нужно изменить

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

в

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