CI 묻고 답하기

제목 업로드 폴더 권한 설정방법 문의
카테고리 CI 2, 3
글쓴이 난만이 작성시각 2018/04/30 10:21:10
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 17174   RSS

"만들면서 배우는 CodeIgniter프레임워크"를  참고하여

<컨트롤러>에 아래와 같이 파일업로드 코드를 작성하였습니다.

 

     $config = array(

          'upload_path' => 'uploads/files/',

          'allowed_types' => 'hwp|doc|docx|ppt|pptx|txt|xlsx|xls|pdf|jpg|jpeg|gif|png|zip|7z|alz|rar',

          'encrypt_name' => TRUE,

          'remove_spaces' => TRUE

     );

     $this->load->library('upload', $config);

     if(!$this->upload->do_upload()) {

          $data['error'] = $this->upload->display_errors(); 

          $this->load->view('write_v', $data);

     } else {

          $upload_data = $this->upload->data();

          ......

     }

 

이때 로컬에서는 파일업로드가 잘되는데

웹에 올렸을 때는 아래와 같은 화면이 출력되면서 에러가 발생하더군요.

 

An Error Was Encountered

Unable to load the requested file: write_v.php

 

그래서 노란색으로 칠한 코드를 삭제하여 실행했더니

이번에는 아래와 같이, file_name, original_name, file_size의 데이터가 안 넘어가면서 에러가 발생했습니다.

 

A Database Error Occurred

Error Number: 1048

Column 'file_size' cannot be null

INSERT INTO `file` (`pid`, `ptable`, `file_path`, `file_name`, `original_name`, `file_size`, `detail_info`, `reg_date`) VALUES (1, 'archive', 'uploads/files/', '', '', NULL, 'a:1:{s:8:\"file_ext\";s:0:\"\";}', '2018-04-30 10:40:34')

Filename: models/Board_m.php

Line Number: 266

 

이런저런 검색결과,

결국 업로드폴더(uploads/files/)의 권한설정, 특히 쓰기 권한설정을 하지 않았던 것이 문제인 것 같습니다.

지금 제가 로컬로 작업하는 컴퓨터의 OS는 윈도우10 이어서

해당폴더 오른클릭 > 속성 > 보안 탭에서 "편집"을 눌러 Everyone이라는 사용자에게 모든 권한을 부여하여

다시 시도했는데도 동일한 에러가 발생하네요.

 

어떤 부분에 문제가 있는지 알 수가 없네요.

고수님들 답변 부탁드립니다.

 

 다음글 어느 url 접근하던지 간에 특정 php 로 페이지 이... (3)
 이전글 호스팅 올리는데 버전문제 (1)

댓글

변종원(웅파) / 2018/04/30 10:25:26 / 추천 0

윈도우는 대소문자 및 권한체크를 하지 않습니다. 리눅스는 2가지를 모두 체크합니다.

그리고 Unable to load the requested file: write_v.php 에러는 파일명 체크 및 권한이 755정도 주어져있는지 체크해보세요.

(파일 업로드 에러가 나서 뷰를 호출하게 되는건데  $data['error']를 컨트롤러에서 출력해보시면 무슨 에러인지 나옵니다)

그리고 upload_path 가 있는지 체크해서 없으면 만들어주는 방어코드 넣으시면 좋습니다.

난만이 / 2018/04/30 10:48:56 / 추천 0

웅파님 말씀대로 에러를 출력해보니

The upload destination folder does not appear to be writable.

라고 나오네요.^^;

추측했듯이 쓰기 권한이 설정되어 있지 않은 거죠?

 

그렇다면 파일업로드 폴더의 권한을 777로 설정해야 한다는 건데,

위에서 제가 실패한 방법 외에,

리눅스 웹서버에 파일업로드를 하기 위해

윈도우에서 추가적으로 설정해야 것들을 알려주시면 감사하겠습니다. ㅜㅜ

변종원(웅파) / 2018/04/30 10:51:50 / 추천 0

난민이/ 리눅스서버에서 업르드 디렉토리에 대한 권한은 최초에 수동으로 한번 해주셔야 합니다.

리눅스서버에서 웹접근은 아파치유저(nobody or apache)라서 프로그램으로 아무리 설정을 해도 바꿀 수가 없습니다.

uploads 만들고 777 주셔야 합니다. 

그 하위는 위에 써드린대로 체크해서 프로그램으로 처리할 수 있습니다.

난만이 / 2018/04/30 11:10:01 / 추천 0

웅파님의 마지막 댓글을 보고 좌절했습니다.

도통 뭔 말인지 알 수가 없어서요.

일단 권한을 "최초에 수동으로 한번" 설정해 줘야 한다는 말의 의미를 몰라 헤매다가

FTP프로그램(filezilla)에서 웹서버의 해당 폴더를 오른클릭한 순간 "파일권한"이 똭 눈에 들어오더군요.

그 순간 웅파님의 말씀을 바로 이해되었고,

"파일권한"에서 777로 설정하니

파일업로드가 잘 되네요.

바쁘신 가운데 정말 정말 고맙습니다.~~~

변종원(웅파) / 2018/04/30 13:00:01 / 추천 0

난민이/ 리눅스 시스템에 대해서 어느 정도는 알고 계시는게 좋습니다. 로컬 개발환경도 가능하면 리눅스계열이 좋구요.

배포판(os), php버전, 아파치버전에 따라 잘 작동되던게 안되는 경우가 생깁니다. ^^;

난만이 / 2018/04/30 13:15:02 / 추천 0

흠... 그렇군요. 이 간단한 것도 따라가기 힘든데, 리눅스까지 해야 되는군요.

이번 홈피 제작만 마무리한 다음에,

웅파님 말씀대로 장기적인 관점에서 공부하겠습니다.

감사합니다.