묻고답하기
초보질문입니다. 도와주세요ㅠ
2014.12.16 13:31
외부페이지 관련 질문입니다. 도와주세요ㅠ
제가 '사이트메뉴 편집'에서 외부페이지를 하나 만들고 '페이지 관리'의 '외부 문서 위치'를 ./news/news_test.php로 지정했습니다.
그 다음 문제가 발생하는데요, 모듈 이름을 news_test 라고 한 경우에 localhost/news_test로 연결하면 파이어폭스에서(물론 다른 브라우져에서도 에러가 발생합니다.) xml 변환에러가 뜹니다. 하지만 localhost/news/news_test.php 로 정확하게 위치를 지정해서 연결하면 잘 나옵니다.
무슨 문제가 있는것일까요? 첫 직장에서 처음 부여받은 업무인데 도와주시면 정말 감사하겠습니다. ㅠㅠ
▲ 위 사진은 오류가 났을때 나오는 메시지 입니다. (localhost/news_test)
▲ 위 사진은 정상적으로 작동했을때 사진입니다. (localhost/news/news_test.php)
▲ 위 사진은 코딩한 것을 캡쳐한 것입니다. 혹시 코딩에 무언가를 추가해야 하면 알려주시면 감사하겠습니다. ㅠㅠ
댓글 23
-
외인
2014.12.16 13:43
-
askanhr
2014.12.16 13:49
바꿔봤는데도 아래처럼 안되네요ㅠ
▲ 바꾼 코드인데요, 똑같은 오류가 나와요...
▲ 오류가 나는 파일(본문의 첫번째 캡쳐사진의 경로)을 찾아가서 열어본 뒤, 캡쳐한 사진입니다.
-
devflow
2014.12.16 14:14
외부문서가 캐시화 되서 그런것같습니다. 외부페이지 캐시 새로고침 시간을 0분으로 해보세요
-
askanhr
2014.12.16 16:41
여기있는 캐싱 시간 설정이 맞는거죠?
이게 맞다면 초기 설정이 0으로 되어있었어요ㅠㅠ
-
devflow
2014.12.16 16:56
그런데 이렇게 만드시는 이유가 무엇인지 궁금하네요. 추측하면 게시물리스트를 외부에서 가져가기 위해서 만드시는것 같은데, XE 모듈이나 따로 PHP 해서 만드시면 더 편리할것같은데요.. 왜 굳이 외부 문서로 하시는지.. 저같은 경우는 아래와 같이 구현했습니다.
/xe/xml/news.php
<?php
define('__ZBXE__', true);
define('__XE__',true);
require_once('../config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
header('Content-Type: text/xml');
echo('<?xml version="1.0" encoding="UTF-8" ?>');~~ XML 형식출력
$oContext->close();
?>위 와같이 하시면 게시물을 불러오기가 아주 쉽죠
-
askanhr
2014.12.16 18:54
네 맞습니다. 다만 게시물 리스트가 아니라 게시판에 올라간 글을 가져가기 위함 입니다.
다음에 뉴스를 송고하기 위해서 테스트를 하고 있습니다.
위와 같이 require를 사용했었는데 저 부분에서 항상 에러가 나더라구요.
코딩은 위와 동일하게 작성해보았습니다.
메시지는 다음과 같습니다.
답변 달아주셔서 감사합니다. 이 문제도 알려주시면 정말 감사하겠습니다. 이 문제가 해결이 되지 않아서요ㅠㅠ
-
devflow
2014.12.16 19:00
config 파일 경로문제입니다. XE의 config.inc.php 파일위치를 입력해주세요. 절대든 상대든 상관없습니다. 맞는 위치를 넣어주시면 됩니다.
-
askanhr
2014.12.16 19:49
질문이 길어지게 되어 죄송합니다. 한 번에 말씀을 드렸어야 하는데ㅠ
위의 공지를 보고도 정작 올릴때는 실수를 하였네요...
저의 외부페이지가 위치하고 있는 곳은 XE/news/news_test.php 입니다.
그래서 상대위치로 ('../config/config.inc.php')로 devflow님께서 댓글을 달아주신 경로와 일치합니다.
이렇게 코드를 작성하였을때 위와 같이 경로가 잘못되었다는 오류가 나옵니다.
혹시 이 부분이 잘못된것인가요? 제가 생각하기에는 상대경로가 맞다고 생각합니다만...ㅠ
-
devflow
2014.12.16 19:55
윈도우 서버이신거같은데 ('./../config/config.inc.php') 로 해보세요
-
askanhr
2014.12.17 09:19
두 가지 방법 모두 다 오류가 똑같아요ㅠ
('./../config/config.inc.php')
('../config/config.inc.php')
그런데 지금 이 문제는 제가 로컬에서 테스트를 하고 있는 상황에서 오류가 나는 것이거든요...
즉, 제 PC(윈도우즈)에 apmsetup7을 설치하고 거기에 XE를 설치한 곳에서 테스트를 진행하였습니다.
그런데 실제 웹에서 똑같은 파일을 실행해보니
로컬
웹
이렇게 되는데 왜 이러는 걸까요? 사실 궁극적인 목적은 웹에서 보일 수 있도록 하는 것이거든요ㅠ 근데 웹상에서는 아무것도 표현이 안되네요... 소스보기를 해도 아무것도 표현되지 않고 그저 이렇게만 나와요...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=ks_c_5601-1987"></HEAD>
<BODY></BODY>
</HTML>
-
devflow
2014.12.17 10:40
그 점에대해선 저도 잘 모르겠네요. 일단 웹상에서 빈페이지가 나오는 이유는 로컬과 같을거로 예상됩니다. 단지 에러가 표시되지않고 Internal Error 500을 뱉으면서 응답내용이 빈거죠. 한번 php.ini에서 에러를 모두 표시로 설정해보시기 바랍니다.
-
askanhr
2014.12.17 11:25
제가 서버를 운영하는 것이 아니라 cafe24에서 호스팅을 받고 있습니다. 혹시 어떻게 변경하는지 알 수 있을런지요?ㅠ
거듭 말씀드리지만 답변 감사합니다ㅠㅠ
-
devflow
2014.12.17 11:27
저와 같은 cafe24이신거같은데 저는
home/www
ㄴ news
ㄴ news.php
ㄴ index.php
에서 제가 첨부해드린 소스로 작 작동을 합니다. 이상하네요. 서버 상 문제는 아닌거 같은데
오류 표시는 상단에
error_reporting(E_ALL);
를 넣어주시면 됩니다.
-
askanhr
2014.12.17 12:17
네. 위치는 말씀하신 곳과 같습니다.
home/www/news/news.php 와 home/index.php
home/www/config/config.inc.php 도 동일한 경로에 위치하고 있습니다.
오류 표시를 상단에 하도록 하였더니 오류는 다음과 같이 나왔습니다.
제가 출력하고 싶은 코드는 다음과 같습니다.이 캡쳐한 사진은 error_reporting(E_ALL); 만 추가하기 이전 입니다.
그리고 혹시 외부페이지 말고 다른 방법으로 구현하는 것이 훨씬 편하다면 어떻게 하는게 좋을까요?ㅠㅠ -
devflow
2014.12.17 12:32
웹상에서 www/news/news.php를 확인하신건가요? 아니면 외부페이지로해서 확인하신건가요.
-
askanhr
2014.12.17 17:12
위 오류는 http://www.xxxyyyzzz.co.kr/news 로 들어갔을 경우 나오는 에러 메시지입니다.
http://www.xxxyyyzzz.co.kr/news/news.php 는 정상적으로 작동합니다.
-
devflow
2014.12.17 17:53
왜 한번더 XE페이지를 거치셔야하는 지 궁금합니다.
1. daum_news_feed -> news.php 불러옴 -> 표시
2. news.php 불러옴 -> 표시1번일 경우 XE가 news.php의 페이지의 결과값을 가지고 file/cache 쪽에 캐시된파일을 만듭니다.
-
askanhr
2014.12.17 21:23
1의 경우에는 www.xxxyyyzzz.co.kr/new로 접속을 하는것이잖아요?
그러면 2의 경우에는 www.xxxyyyzzz.co.kr에서 바로 연결이 되는 것인가요? 그럼 XE를 거치지 않는 다는 말씀이신것 같습니다만, 그럼 어떤 장점이 있는지 알고 싶습니다. 답변 지속적으로 달아주셔서 정말 감사합니다ㅠㅠ
-
devflow
2014.12.18 00:43
다시 한번 설명드리겠습니다.
1의 경우에는 페이지 모듈을 이용하여 A를 불러옵니다. 그런데 A페이지의 결과값(말그대로 HTTP Response)을 캐시화해서 뿌려주죠.
질문 작성자님께서 하고싶은게 뉴스 송출이니, 즉 XE의 데이터를 이용해 XML을 만들고자 하신건데, 외부페이지와 XE와는 데이터 연동이 되질 않으며 전혀 관계도 없습니다.. 단지 그 페이지(서버 내부든 외부든) 내용을 보여주는 것 뿐입니다.
제가 알려드린 define( ~ context::close() 소스를 이용한 부분은 XE의 데이터, 모듈등을 사용 할 수 있는 소스코드입니다. 즉 질문자님께서 원하시는 게시물 리스트를 추출해, XML 형식에 맞게 출력이 가능하다는겁니다.
너무 페이지모듈에 얽매이시는것같습니다.
-
askanhr
2014.12.18 09:08
아 무슨 말씀이신지 이해 했습니다.
지속적으로 답변해주셔서 정말 감사합니다. :)
-
devflow
2014.12.18 09:31
아닙니다. 저도 많이 부족하지만 저도 할 수 있는데까지는 도움이되고싶습니다. 또 막히는게 있으시면 묻고답하기 게시판에 남겨보세요 많은 분들이 도와드릴겁니다
-
askanhr
2014.12.18 09:54
넵 감사합니다.
근데 혹시... 지금 제가 관리하는 홈에서 갑자기
Forbidden
You don't have permission to access /news/ on this server.
이 메시지가 나오는데 무슨 문제가 있는거죠?ㅠㅠ 큰일이네요ㅠㅠ
-
askanhr
2014.12.18 09:58
Forbidden
문제는 잘 해결했습니다.... 제가 실수를 해서;;
line 1에 에러가 있는 것으로 보아 <?를 <?PHP 해 보시면 어떨까 싶습니다만...