CI 묻고 답하기

제목 서버에 있는 프로젝트를 local로 가져와 테스트 했을시 오류 원인
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2017/11/16 10:18:21
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 13950   RSS

서버에 있는 프로젝트를

 

local로 가져와서 테스트를 할려고 하는데

 

로그인부터 막히네요;;

 

환경자체도 똑같이 맞추었는데 계속 에러가 납니다;

 

로그인 시 ajax를 통해 검증을하는데

 


if($this->form_validation->run() ==  FALSE) {
	
			echo json_encode(FALSE);
		
		} else {

계속 false를 출력하네요

 

크롬개발자도구에서 확인해보니 ajax통신시 500에러가 출력이 되고 되돌아 오는값을 확인해보면

 

false 값을 출력이 됩니다. 

 

echo json_encode(FALSE) 위에 echo '1' 할경우

 

1은 출력이 됩니다.

 

이부분에서 막히네요;;

 

서버에서는 똑같은 계정으로 접속했을 때는 정상적으로 로그인이 됩니다.(로컬 db도 서버db와 똑같이 맞추었습니다.)

 

500에러가는 문법오류로 알고 있는데

 

서버에 있는 코드로 그대로 가져왔기에 문법에 잘못된 부분은 없는데말이죠 ㅜㅜ

 

어디 부분이 문제이길래 서버와 달리 로컬에서는 에러가 출력이되는것 일까요 ?

 

어디에서부터 확인해야 할까요??

 

if($this->form_validation->run() ==  FALSE) {
	              
			echo json_encode(FALSE);
		
		} else {
			
			$name = $this->input->post('name',TRUE);
			$pass = $this->input->post('pass',TRUE);
			$user =  $this->Login_m->get_pass($name);

			if(empty($user)) {
				
				echo json_encode(1);//사용자가 없을때
				exit;

			} else if($user->connect == 'N'){

				echo json_encode(5);//상태가 N일때
				exit;
				
			}

			if($name == 'jds')	 {
				$this->session->set_userdata('name', $user->name);//아이디
				$this->session->set_userdata('name2', $user->name2);//아이디
				$this->session->set_userdata('dept', $user->dept);//부서
				$this->session->set_userdata('scope', $user->scope);//권한
				$this->session->set_userdata('user_name', $user->name2);//이름
				$this->session->set_userdata('deptCD', $user->deptCD);//부서번호
				$this->session->set_userdata('gye', $user->gye);//계
				$this->session->set_userdata('gyeCD', $user->gyeCD);//계번호
				$this->session->set_userdata('rank', $user->rank);//직위
				$this->log_m->set_login_log('login');

				//echo json_encode(2017);
				echo json_encode(7);//로그인 성공
				exit;

			} else 

			if($name ==  $user->name && password_verify($pass, $user->pass)) {//password 라이브러리를 사용하여 검증

				$this->session->set_userdata('name', $user->name);//아이디
				$this->session->set_userdata('name2', $user->name2);//아이디
				$this->session->set_userdata('dept', $user->dept);//부서
				$this->session->set_userdata('scope', $user->scope);//권한
				$this->session->set_userdata('user_name', $user->name2);//이름
				$this->session->set_userdata('deptCD', $user->deptCD);//부서번호
				$this->session->set_userdata('gye', $user->gye);//계
				$this->session->set_userdata('gyeCD', $user->gyeCD);//계번호
				$this->session->set_userdata('rank', $user->rank);//직위
				$this->log_m->set_login_log('login');

				//echo json_encode(2017);
				echo json_encode(7);//로그인 성공
				exit;

			} else {

				//echo json_encode(FALSE);
				echo json_encode(2);//비밀번호 틀림
				exit;

			}

		}

 

 

 다음글 이러한 차이는 어떤 설정때문에 발생하는 건가요? (4)
 이전글 절대 URL로 접근 못하도록 하는 방법 (2)

댓글

kaido / 2017/11/16 10:38:46 / 추천 0
500의 대부분은 데이터베이스 에러입니다
정수리 / 2017/11/16 11:07:31 / 추천 0

@kaido

답변감사합니다.

말씀하신대로 모델에 있는 함수를 통해

데이터를 가져올려고 하니false를 반환하네요;;

 

제 로컬에서 mysql와 연동이 되어있는지 테스트를 해보니 정상적으로 연결은 되있는 것 같구요

 

database.php에서도

정상적으로 설정한것 같은데 

false라는 오류만 출력하니 데이터베이스의 어떤 오류인지 확인이 힘드네요

정수리 / 2017/11/16 11:26:42 / 추천 0

@kaido

코드를 수정하여 DB에서 데이터를 가져오는지 확인해보니 정상적으로가져네요;;

그렇다면 데이터베이스 오류는 아니지 않나요??

한대승(불의회상) / 2017/11/16 13:11:07 / 추천 0
아파치 로그와 PHP 로그를 먼저 살펴보세요.
정수리 / 2017/11/16 13:17:02 / 추천 0

@한대승

답변감사합니다.

코드하나하나 주석처리 하면서 테스트 해보니

원인을 찾았습니다.

$this->log_m->set_login_log('login');

이부분에서 원인이였더라구요

Field 'logouttime' doesn't have a default value

insert into tb_login_view(userid, username, deptname, ip, logintime) values(0, 'jds', '�쒖뒪�쒓�由ъ옄', '127.0.0.1', '2017-11-16 13:43:18')

이러한 출력이 되는데

logouttime 이라는 필드의 경우 기본값을 가지고 있지 않은데

기본값이 값이 없다라는 에러가 출력이 되네요;;

로컬db에서는 logouttime필드를 수정하여 해결하였습니다.

나름 서버개발환경하고 로컬개발환경하고 똑같이 맞췄다고 생각했는데

 

막상 로컬에서 테스트해보니 안되는게 많네요ㅜㅜ