首页 > 解决方案 > 在现有文件夹中创建文件夹后如何在php中设置755权限

问题描述

我在 Codeigniter 控制器中有以下代码,用于将一些文件上传到远程 ubuntu 服务器中的“上传”文件夹。在这种情况下,上传文件时会在上传文件夹中创建一个名为officer_id 的新文件夹,并且应该对其应用755 权限。否则拒绝上传文件。

 public function addFiles()
        {

            $this->checkPermissions('add', 'officer');
            $bc = array(array('link' => '#', 'page' => 'Attachments'));
            $meta = array('page_title' => 'Officers - Files', 'bc' => $bc);
            $this->data['officer'] = $this->Officer_model->getOfficer();


            $this->form_validation->set_rules('officer', "Officer", 'required');

            if ($this->form_validation->run() == true) {
                $files = $this->multi_upload($_FILES['file'], './uploads/' . $this->input->post('officer'));
                if (!empty($files)) {
                    foreach ($files as $fname) {
                        $fdata[] = array(
                            'officer' => $this->input->post('officer'),
                            'file_name' => $fname,
                            'status' => 1,
                        );
                    }
                    if ($this->db->insert_batch('tbl_officer_files', $fdata)) {
                        $this->session->set_flashdata('message', 'Officer Attachments Updated Successfully ..!!');
                        redirect('officer/addFiles');
                    } else {
                        $this->session->set_flashdata('message', 'Officer Attachments Updation Failed ..!!');
                        redirect('officer/addFiles');
                    }

                }
            }
            $this->render('officer/addFiles', $meta, $this->data);

        }

        public function saveUpload()
        {
            $this->multi_upload($_FILES['file']);
            if ($this->upload->do_upload('file')) {
                $data = array('upload_data' => $this->upload->data());

                $inputFileName = './uploads/' . $data['upload_data']['file_name'];

                echo json_encode(array('success' => 'Files have been uploaded successfuly ..!!'));
            } else {
                $error = array('error' => $this->upload->display_errors());
                echo json_encode($error);//array('error' => 'You are not allowed to upload such a file.',

            }
        }

如何修改我的代码以启用此功能(如 chmod ......)?任何人都可以帮忙吗?

标签: phpcodeigniter

解决方案


您可以chmod("test.txt",0755);在上传后使用更新文件的权限。

您可以按以下步骤逐步执行此操作。


//this function returns uploaded file path
$uploadedd_file = file_upload_function(...); 

if(!file_exists($uploadedd_file)){


  die('Error in uploading file');

}

// Setting file permission
$set_permission = chmod($uploadedd_file,0755);



if(!$set_permission){

 // delete file if permission is not set
 unlink($uploadedd_file);

}



// optional step to validate
$new_permission = substr(sprintf('%o', fileperms($uploadedd_file)), -4);

echo "all good goes here, file uploaded and permission is set to " . $new_permission;

阅读更多关于chmodhttps://www.w3schools.com/php/func_filesystem_chmod.asp https://www.php.net/manual/en/function.chmod.php 我希望这可行,让我知道。


推荐阅读