제목 | CI3 서버 이관 후 upload 라이브러리로 파일 업로드 및 에디터 사진 업로드 오류 | ||||||
---|---|---|---|---|---|---|---|
카테고리 | CI 2, 3 | ||||||
글쓴이 | 도토리 | 작성시각 | 2021/01/25 11:32:42 | ||||
|
|||||||
회사에서 사용중인 웹호스팅 서버에서 php school의 가상서버호스팅으로 소스를 이관 후 기존 웹호스팅에서 정상 작동하던 파일 업로드기능이 작동하지 않습니다. 1. 두 서버의 환경
2. 문제 현상 1) Ci의 upload 라이브러리로 파일 업로드 시 파일 값 없음 아래는 테스트 용도로 간단히 찍어본 코드입니다. --- 파일 업로드 HTML --- <form method="post" enctype="multipart/form-data" action="/"> <input type="file" name="file" value=""> <input type="submit" value="submit"> </form> --- 파일 처리 PHP --- $config['upload_path'] = './uploads/'; $config['allowed_types'] = '*'; $config['overwrite'] = TRUE; $config['max_size'] = 30720; $config['encrypt_name'] = TRUE; $this->load->library('upload', $config); $this->upload->initialize($config); // $this->upload->do_upload('file_input'); // 20210125 12:21 수정 $this->upload->do_upload('file'); // 업로드 파일 정보 $file = $this->upload->data(); var_dump($_FILES); var_dump($file); --- 결과 --- array ( // $_FILES 내용 'file' => array ( 'name' => 'dog.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpc4Uc3y', 'error' => 0, 'size' => 208100, ), ) array ( // $file 내용(upload 라이브러리를 통한 파일 내용) 'file_name' => '', 'file_type' => '', 'file_path' => './uploads/', 'full_path' => './uploads/', 'raw_name' => false, 'orig_name' => '', 'client_name' => '', 'file_ext' => '', 'file_size' => NULL, 'is_image' => false, 'image_width' => NULL, 'image_height' => NULL, 'image_type' => '', 'image_size_str' => '', )
결과 내용을 보면, $_FILES에는 정상적으로 파일값이 전달되었음을 확인할 수 있는데, upload 라이브러리로는 파일이 전달되지 않습니다.
2) 네이버스마트에디터(smarteditor2)에서 사진 업로드 사용 시 업로드용 새 창에서 사진 목록까지는 표시되는데, 이후 확인 버튼 클릭 시 반응 없음(서버에 파일 업로드 되지 않음) : 에디터의 경우 CI와 관계가 없긴 하지만, 현재 CI의 파일 업로드도 안 되는 상황이라 혹시 비슷한 원인 때문이 아닐까 하여 함께 글을 작성합니다.
3. 시도 1) 파일 용량 설정 : php.ini의 upload_max_filesize, post_max_size 값을 각각 2M에서 20M로 변경 2) 권한 : 관련된 모든 디렉토리의 권한을 확인해봤지만 모두 644로 적용되어 있음
아무리 인터넷을 검색해봐도 원하는 답을 얻지 못했고, 어디서 무엇을 어떻게 건드려야 할지 막막해서 이렇게 글을 작성합니다. |
|||||||
다음글 | sess_time_to_update 관련 질문 드립니다... (6) | ||||||
이전글 | 파일 업로드 클래스를 통해서 동영상 업로드 (5) | ||||||
변종원(웅파)
/
2021/01/25 12:11:09 /
추천
0
|
도토리
/
2021/01/25 12:24:26 /
추천
0
변종원(웅파) 그렇네요! 위 코드는 제가 테스트를 위해 임시로 작성하면서, 잘못 작성한 것이 맞고, 위 내용 수정했습니다! 다만 위 내용대로 수정해도 증상 해결은 여전히 되지 않네요...ㅠ |
도토리
/
2021/01/25 12:58:57 /
추천
0
** 자답 겸 문의 ** 이것 저것 건드려보다가 혹시나 해서 권한 설정을 다시 건드려봤는데요! 해당 디렉토리의 other의 쓰기 권한을 허용하니 업로드가 되네요!(라이브러리, 에디터 모두 해당되네요...ㅠ) 그런데, other의 쓰기 권한을 허용하는게 맞는 걸까요? 당장 서비스는 되니, 허용하겠지만, 한 번도 other에 읽기 권한 말고 다른 권한을 허용한 적이 없어 걱정되네요...ㅠ |
변종원(웅파)
/
2021/01/25 13:01:14 /
추천
0
웹서버는 나도 아니고 그룹도 아니기 때문에 other가 맞습니다
|
도토리
/
2021/01/25 13:02:51 /
추천
0
변종원(웅파) 친절하게 계속 답변 해주셔서 감사합니다!^^ |
황소
/
2021/08/20 14:50:52 /
추천
0
저도 찾아보다가 찾았네요. 리눅스 Apache php-fpm 을 사용할 경우에 설정을 해줘야 한다네요. /etc/selinux/config 파일의 SELINUX=enforcing ==> SELINUX=permissive 로 변경 저장 후에 setenforce 0 해주니까 됩니다.
|
$this->upload->do_upload('file_input'); 선언된 파일명이랑 html의 파일명이랑 다릅니다.