Merge pull request #2675 from HB9HIL/check-folder-permissions
Debug View - Check File Permissions recursive
这个提交包含在:
		
						当前提交
						838051452c
					
				
					共有  1 个文件被更改,包括 45 次插入 和 53 次删除
				
			
		|  | @ -1,69 +1,61 @@ | ||||||
| <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | ||||||
| 
 | 
 | ||||||
| class Debug extends CI_Controller { | class Debug extends CI_Controller { | ||||||
| 	function __construct() |     function __construct() | ||||||
| 	{ |     { | ||||||
| 		parent::__construct(); |         parent::__construct(); | ||||||
| 
 | 
 | ||||||
|         $this->load->model('user_model'); |         $this->load->model('user_model'); | ||||||
| 		if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } |         if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } | ||||||
| 	} |     } | ||||||
| 
 | 
 | ||||||
| 	/* User Facing Links to Backup URLs */ |     /* User Facing Links to Backup URLs */ | ||||||
| 	public function index() |     public function index() | ||||||
| 	{ |     { | ||||||
|         $this->load->helper('file'); |         $this->load->helper('file'); | ||||||
| 
 | 
 | ||||||
|         // Test writing to backup folder
 |         // Test writing to backup folder
 | ||||||
|         if ( ! write_file('backup/myfile.txt', "dummydata")) |         $backup_folder = $this->is_really_writable('backup'); | ||||||
|         { |         $data['backup_folder'] = $backup_folder; | ||||||
|             $data['backup_folder'] = false; |  | ||||||
|         } |  | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             if(unlink(realpath('backup/myfile.txt'))) { |  | ||||||
|                 $data['backup_folder'] = true; |  | ||||||
|             } else { |  | ||||||
|                 $data['backup_folder'] = false; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         // Test writing to updates folder
 |         // Test writing to updates folder
 | ||||||
|         if ( ! write_file('updates/myfile.txt', "dummydata")) |         $updates_folder = $this->is_really_writable('updates'); | ||||||
|         { |         $data['updates_folder'] = $updates_folder; | ||||||
|             $data['updates_folder'] = false; |  | ||||||
|         } |  | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             if(unlink(realpath('updates/myfile.txt'))) { |  | ||||||
|                 $data['updates_folder'] = true; |  | ||||||
|             } else { |  | ||||||
|                 $data['updates_folder'] = false; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         // Test writing to uploads folder
 |         // Test writing to uploads folder
 | ||||||
|         if ( ! write_file('uploads/myfile.txt', "dummydata")) |         $uploads_folder = $this->is_really_writable('uploads'); | ||||||
|         { |         $data['uploads_folder'] = $uploads_folder; | ||||||
|             $data['uploads_folder'] = false; | 
 | ||||||
|  |         $data['page_title'] = "Debug"; | ||||||
|  | 
 | ||||||
|  |         $this->load->view('interface_assets/header', $data); | ||||||
|  |         $this->load->view('debug/main'); | ||||||
|  |         $this->load->view('interface_assets/footer'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private function is_really_writable($folder) | ||||||
|  |     { | ||||||
|  |         // Get the absolute path to the folder
 | ||||||
|  |         $path = FCPATH . $folder; | ||||||
|  | 
 | ||||||
|  |         // Check if the folder exists
 | ||||||
|  |         if (!file_exists($path)) { | ||||||
|  |             return false; | ||||||
|         } |         } | ||||||
|         else | 
 | ||||||
|         { |         // Check if the folder is writable
 | ||||||
|             if(unlink(realpath('uploads/myfile.txt'))) { |         if (is_writable($path)) { | ||||||
|                 $data['uploads_folder'] = true; |             // Check if the subdirectories are writable (recursive check)
 | ||||||
|             } else { |             $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); | ||||||
|                 $data['uploads_folder'] = false; |             foreach ($iterator as $item) { | ||||||
|  |                 if (!is_writable($item->getPathname())) { | ||||||
|  |                     return false; | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|  |             return true; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 |         return false; | ||||||
| 
 |     } | ||||||
| 		$data['page_title'] = "Debug"; |  | ||||||
| 
 |  | ||||||
| 		$this->load->view('interface_assets/header', $data); |  | ||||||
| 		$this->load->view('debug/main'); |  | ||||||
| 		$this->load->view('interface_assets/footer'); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
		正在加载…
	
		在新工单中引用