CI 묻고 답하기

제목 멀티파일업로드 중 퍼미션문제일까요..?
글쓴이 세콩 작성시각 2012/01/17 11:03:32
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 21725   RSS
뷰페이지에서 이미지를 3개를 동시에 업로드 하고싶었어요!!
그래서 폼에 input type file 을 3개 넣었죠..

대략적으로.. 이런식..
<input type="file" name="cam_main_img" />
<input type="file" name="cam_thumb_img" />
<input type="file" name="pre_img" />



컨트롤러 내용...
function addCampaign() {
 try {
  // get params.. from post()
  $row = $this->input->post();

  // 업로드에 실패하면??
  if(! $this->common->multiple_upload()) {

   echo 'Something went wrong during upload';
  }
  // 업로드 성공시!!
  else {
   echo 'Upload success !<br />';
   echo '<pre>';
   print_r($files);
   echo '</pre>';
  }
 }catch(Exception $e) {
  echo $e->getMessage();
 }
}


멀티플 업로드 메서드...
function multiple_upload($upload_dir = '/tmp/uploads/project/img', $config = array())
{
 $CI =& get_instance();
 $files = array();

 if(empty($config))
 {
  $config['upload_path']   = $upload_dir;
  $config['allowed_types'] = 'gif|jpg|jpeg|jpe|png';
  $config['max_size']      = '2048';
 }

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

 $errors = FALSE;

 foreach($_FILES as $key => $value)
 {
  switch ($key){
   case "cam_main_img":
   case "cam_thumb_img":
    $config['upload_path']   = $upload_dir.'/campaign';
    echo $config['upload_path'];
    break;
   case "pre_img":
    $config['upload_path']   = $upload_dir.'/present';
    echo $config['upload_path'];
    break;
  }
  if( ! $CI->upload->do_upload($key))
  {
   $data['upload_message'] = $CI->upload->display_errors(); // ERR_OPEN and ERR_CLOSE are error delimiters defined in a config file
   $CI->load->vars($data);
   echo "<pre>";
   print_r($data['upload_message']);
   echo "</pre>";
   $errors = TRUE;
  }
  else
  {
   // Build a file array from all uploaded files
   $files[] = $CI->upload->data();
  }
 }

 // There was errors, we have to delete the uploaded files
 if($errors)
 {
  foreach($files as $key => $file)
  {
   @unlink($file['full_path']);
  }
 }
 elseif(empty($files) AND empty($data['upload_message']))
 {
  $CI->lang->load('upload');
  $data['upload_message'] = $CI->lang->line('upload_no_file_selected');
  $CI->load->vars($data);
 }
 else
 {
  return $files;
 }
}

삽질하면서 중간중간 테스트하려고 코드가 들어가있는데.. 아무튼..

결과적으로 이런 메세지가 나옵니닷..

/tmp/uploads/project/img/campaign

The upload path does not appear to be valid.

/tmp/uploads/project/img/campaign

The upload path does not appear to be valid.

The upload path does not appear to be valid.

/tmp/uploads/project/img/present

The upload path does not appear to be valid.

The upload path does not appear to be valid.

The upload path does not appear to be valid.

Something went wrong during upload 

리눅스서버 디렉토리상의 권한문제일까요??
나름 한다고 권한설정도 해놓았는데..

경    로 :  /tmp /uploads/ project /img/
퍼미션 : (777) (750)      (750)         (750)
img 디렉토리 내부 : campaign(776) , present(776) 입니닷.. 

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 다음글 $_POST 방식을 어떻게 하는거죠? (2)
 이전글 링크 경로 문제 ,, 이번엔 제대로 원인 분석을 해봐야... (5)

댓글

세콩 / 2012/01/17 14:39:40 / 추천 0
 하앜... 곧 자답을 쓸수있을 것같아요..... 후...............
세콩 / 2012/01/17 14:49:07 / 추천 0
자답입니다..

퍼미션이 776 인상태에서는 파일업로드가 안되었구
777인경우엔 정상적으로 업로드가되었어요

혹시모를 보안을 위해
악성코드실행을 막기위해서 실행권한을 빼었던것이고
파일을 쓰는거에는 지장이 없을거라생각해서 준 퍼미션인데
왜 업로드가 안되는지는 아직도 잘 모르겠습니닷 ㅠㅠ

어쨋든;; 이미지는 이제 업로드를 시키게 되었습니닷!!

자세히보니 정확히 무엇을 물어본것인지를 안적었네요... ㅎㅎ;;

ps. 실행퍼미션만 빼었을뿐인데 왜 업로드가 안되었던걸까요..? 개념이 후달려.. ㅠㅠ
라마야나 / 2012/01/18 18:54:09 / 추천 0
디렉토리는 읽기 속성외 실행 속성 까지 줘야 접근이 가능 하기 때문입니다.
세콩 / 2012/01/18 20:39:59 / 추천 0
 아하.. 그렇군여!! 감사합니닷!! (_ _) !!