CI 묻고 답하기

제목 codeigniter초보입니다. json관련 도와주세요 선배님~~ㅠㅠ
카테고리 CI 2, 3
글쓴이 상상인 작성시각 2018/09/27 23:20:27
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 18721   RSS

안녕하세요?

codeigniter를 막시작한 초보입니다.

제게 한가지 미션이 떨어졌는데요.

codeigniter로 제작된 홈페이지의 호스팅을 옮겨 차질없이 웹서비스를 재개하는 것입니다.

예전에는 단독서버에서 서비스를 하던 것을 일반 호스팅으로 옮기면서 현재 애를 먹고 있습니다.

 

사이트는 아마추어농구 동우회 사이트입니다.

codeigniter파일은 정상적으로 설치했습니다.

예전 서버에서는 메인화면에 경기사진과 기사가 출력되었는데 서버를 옮기고 나서 출력되지 않고 있습니다. ㅠㅠ

메인페이지는 http://www.kbasket.kr/index.php --> 현재 메인컨텐츠가 출력이 안되 index.html에 안내 페이지를 만들어 넣엇습니다

최신 기사와 사진이 메인에서 출력되지 않는 이유가 뭔지 모르겠습니다.

 

해당 페이지를 소스보기 해서 중간에 보면 아래와 같은 코드로 구성되어 있습니다.

아래 코드 3번째 줄에 보면 ''/json/article/head'이라고 되어 있는 부분요.

예전 서버에서는 이 상태에서 페이지가 정성 작동했습니다.

그런데 궁금한 것이 있습니다.

사이트내 다른 페이지 주소가 http://www.kbasket.kr/game라고 할 때 class명 game 앞에 json을

붙여 http://http://www.kbasket.kr/json/game/ 이라고 입력하면 json방식으로 배열 값을 가져오는 것을 확인할 수 있습니다.

 

그렇다면 아래 소스 3번째 줄  ''/json/article/head'이라고 되어 있는 부분요.

이것은 http://www.kbasket.kr/index.php/article/head 에 있는 데이타를 가져오기 위해

class명 앞에 json을 붙여 http://www.kbasket.kr/index.php/json/article/head 이라고 작성한 것이 아닌가요?

???????????

 

페이지 소스 로직을 읽어보면 head라는 함수를 호출하면서 데이타를 불러와 화면에 뿌려주는 로직 같은데요.

실제로 http://www.kbasket.kr/index.php/article/head 로 입력하면 게시물 리스트 화면이 보이는데

http://www.kbasket.kr/index.php/json/article/head 이라고 입력하면 화면이 먹통입니다.

 

지금 이렇게 json이 작동하지 않는 이유가 뭔가요?

json을 사용하려면 서버에 별도 파일을 설치해야 하나요?

너무 답답해 선배님들에게 도움을 청합니다.

도와주세요!!!

 

php5.5 maria db 10을 사용하고 있습니다.

 

>> 다음은 메인 페이지 중간 소스 중 일부입니다

<script type="text/javascript">
	$(function(){
		$.getJSON('/json/article/head', function(a){
			$.each(a, function(k, r){
				if(k == 0)
				{
					div = $('<div>').attr({
						'class' : 'col-xs-12 col-lg-8'
					});
					img = $('<a>').attr({
						'class'	: 'img'
						,'href'	: '/article/read/' + r['idx']
					});
					if(r['thumb'])
					{
						img.css('background-image', 'url(/depot/photo/' + r['thumb'] + '?s=1200)');
					}
					caption = $('<div>').attr({
						'class'	: 'caption'
					});

					caption.append(
						$('<h1>').append(
							$('<a>').attr('href','/article/read/' + r['idx']).append(r['subject'])
						)
					);
					caption.append($('<p>').html(r['content'].substring(1,200)));

					div.append(img).append(caption);
					$('#main').append(div);
				}
				else if(k < 3)
				{
					div = $('<div>').attr({
						'class' : 'col-lg-4 col-xs-6'
					});
					img = $('<div>').attr({
						'class'	: 'img'
					});
					if(r['thumb'])
					{
						img.css('background-image', 'url(/depot/photo/' + r['thumb'] + '?s=800)');
					}
					caption = $('<div>').attr({
						'class'	: 'caption'
					});

					caption.append(
						$('<h3>').append(
							$('<a>').attr('href','/article/read/' + r['idx']).append(r['subject'])
						)
					);

					div.append(img).append(caption);
					$('#main').append(div);
				}
			});
		});

 

 다음글 ci4 .env 파일에 설정한 값을 어떻게 /appli... (2)
 이전글 네이버 아이디로 로그인 문의드려요!!! (1)

댓글

kaido / 2018/09/28 07:56:26 / 추천 0
index.php 죽이기로 검색해보세요^^
상상인 / 2018/09/28 10:56:11 / 추천 0

안녕하세요, 우선 바쁘신 시간에 답변을 달아주셔 감사드립니다.

저희 홈페이지 .htaccess 파일에는 선배님이 일러주신 방법 그대로 index.php죽이는 방법이 적용되어 있습니다.

저희 사이트의 문제는 단독서버를 사용하다가 카페24 웹호스팅으로 이전한 뒤로 메인페이지에 경기 사진과 기사목록이 뿌려지지 않는 것입니다.

페이지 소스를 보면

<span class="marker">$.getJSON('/json/article/head'</span>, function(a){

내용을 보면

/article/head method에서 자료를 가져와 화면에 뿌려주는 방식인 것 같은데 서버 이전후에는 아무 것도 가져오지 못하고 빈 화면입니다 ㅠㅠ

 

kaido / 2018/09/28 11:31:17 / 추천 0

해당 문제는 직접 설정 파일을 봐야 알것 같습니다.

우선 몇가지 집고 넘어갈것이 json 이라는 컨트롤러 파일이 없는지?

해당 사이트 가서 몇가지 테스트해보니 json 이라는 파일이 없어 보입니다.

 

그럼 의심해 볼수 있는것은 몇 가지 있습니다.

1. remap 처리된것인지

 remap 으로 컨트롤러를 리맵핑 되었는지 확인

다만 소스를 그대로 복사해서 왔다면 가능성은 낮음 보통은 똑같이 이전되기때문에.

2.  route 설정 

route 설정으로 주소에 어떤 트릭을 쓰고 있는지 확인

3. rewrite 설정

CI 설정에서 찾을수 없다면 서버 설정을 바꿧을 가능성도 있습니다.

 

우선  /json/article/head  여기에 맵핑이 되는 컨트롤러와 메소드를 찾아 보세요.

주소에 http://www.kbasket.kr/json/article/head 이라고 치셔도 무언가 json 내용이 나와야만 합니다

안나오면 나오게끔 만드셔야 합니다.

거기서부터 테스트해 들어가는 작업을 진행 하시면 될것 같습니다.

변종원(웅파) / 2018/09/28 11:33:08 / 추천 0

아파치 에러로그, ci로그를 열어보셔야할것 같습니다.

database.php에서 pconnect 활성화되어 있는지도 확인해보시구요

상상인 / 2018/09/28 20:04:54 / 추천 0

장문의 답변을 주시니 감사해서 몸둘바 모르겠습니다.

염치불구하고 문의를 이어가겠습니다.

/json/game 과 같이 game 클래스 앞에 json을 붙이면

game class안에 있는 배열을 json 형태로 가져온다고 말씀드렸습니다.

그런데 메인 페이지 소스에서 /json/article/head라고 입력되어있는데 아무 데이터도 화면에 뿌리지 못합니다.

그래서 선배님 말씀대로 controller 파일을 뒤지다 보니 game class파일이 있어 열어보니 아래와 같은 코드가 있습니다.

     if($this->uri->segment(1) == 'json') {
      $this->config->set_item('rander', 1);
      echo json_encode($param);
     } else {
      $this->load->view($this->c . '/read', $param);
     }

 

의미상으로 이해하기에 game class앞에 json이 붙으면 config파일 안에서 기존 설정을 무시하고 동적인 설정을 하는 것이라고 하는데

$this->config->set_item('rander', 1); 라는 의미가 뭔가요?

장문의 답변을 주셨는데 귀찮게 해드려 죄송합니다. 꾸벅~~ㅠ

 

kaido / 2018/09/28 20:52:50 / 추천 0

리맵이든 라우터이든 url 컨트롤 하는 부분이 어딘가에 설정되어 있는것으로 보입니다

json 으로 시작 되면 분기를 타도록 되어있는것으로 보입니다.

set_item 은 

http://www.ciboard.co.kr/user_guide/kr/libraries/config.html

 

갑자기 옮겼다가 당황스러워 하시는것으로 보입니다.

전반적으로 CI 구조에 대해서 천천히 학습 하셔야 할것 같습니다.

급할 수록 돌아가듯이요 ㅎㅎ

 

상상인 / 2018/10/02 01:40:47 / 추천 0

두서없는 질문에 친절하게 답변을 달아주셔 감사드립니다 ㅎㅎ

아직 문제는 해결하지 못했지만 시간을 할해해주신 점 거듭 감사드립니다. 꾸벅~~