간단한 원인 : 엉뚱한 곳에서 빈 줄이 출력되었다.

원인 : 
  • 엉뚱한 곳에서 (보통 xe/files/config/config.user.inc.php 에서 실수함) 빈 줄이 추가됨
  • 실제로 날라오는 XML자료의 첫 번째 줄에 <response>가 나타나지 않고 빈 줄이 추가됨
  • xml을 처리한 javascript상에서 xml이 아닌 일반 메시지로 판단 
    (정규식에 의해 첫 번째에 <response>가 나타나면 xml로 파싱해서 처리하고 그렇지 않으면 일반 메시지로 판단
    앞에 새 줄(\n)이 있으므로 /^<response>/에 해당하지 않으므로 일반 메시지로 판단됨)
  • 해당 경고 메시지가 뜬다
추가 : 이런 경우는 보통 __OB_GZHANDLER_ENABLE__ 을 활성화 하면 에러남
  • 메시지 내용은 header상에서는 압축되었다고 했으나, 정작 메시지 내용은 압축된 자료 앞에 \n이 추가되어됨
  • 브라우저상에서 정상적인 압축 자료로 인식하지 못하고 지원하지 않는 인코딩이라는 창이 뜸

해결 방법 : 엉뚱한 빈 줄을 찾아야 된다. (output buffering 기능을 끄면 header전에 출력되는곳을 알 수 있으나 정작 어디서 꺼야될지는 정확하게 모르겠다.) 일단 xe/files/config/config.user.inc.php에 빈 줄이 있는 지 (특히 <? 앞이나 ?> 뒤에 확인할 것) 확인한다.


Posted by Parker Falcon

댓글을 달아주세요

제로보드 XE 에서는 권한이 없는 행동을 할 경우,

정말 말 그대로 '권한이 없습니다' 라는 메시지를 띄웁니다.

물론 논리적인 문제가 있는 메시지는 아니지만,

사람들에게 너무 딱딱하고, 또한 권한에 따라서 메시지를 다르게 하고 싶은 경우가 있습니다.

이런 경우 이렇게 해보세요.


Posted by Parker Falcon

댓글을 달아주세요

  1. 조현우
    2009.01.16 15:20
    댓글 주소 수정/삭제 댓글
    안녕하세요. 좋은팁감사합니다. 그동안 이팁을 잘사용하다가, 이번에 XE 1.1.4로 업데이트하고 이 팁을 적용하니까, 아래와 같은 에러가 뜨네요. 어떻게 하면 좋을까요?

    감사합니다.

    에러의 몇줄을 적으면,
    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home1/xxxxxx/public_html/modules/board/board.view.php on line 175

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home1/xxxxxxx/public_html/modules/board/board.view.php on line 177

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home1/xxxxxxx/public_html/modules/board/board.view.php on line 179

    Warning: Cannot modify header information - headers already sent by (output started at /home1/xxxxxxx/public_html/modules/board/board.view.php:175) in /home1/xxxxxx/public_html/classes/display/DisplayHandler.class.php on line 291

    이런식으로 에러가 나면서 권한 메세지 팝업이 뜨네요.
    • 2009.01.17 14:13 신고
      댓글 주소 수정/삭제
      답변을 드리고 싶지만, 해당하는 175, 177, 179 줄이 어디인지 모르겠습니다. 해당 부근의 소스를 알려주시면 답변에 도움이 되겠습니다 :)
  2. 조현우
    2009.01.17 14:21
    댓글 주소 수정/삭제 댓글
    앗, 죄송합니다. 아래와 같습니다.

    if(!$this->grant->view && !$oDocument->isGranted()) {
    $oDocument = null;
    $oDocument = $oDocumentModel->getDocument(0);
    Context::set('document_srl','',true);

    line: 175 if (in_array('3',$grants['view'])) //그룹3에게 보기 권한이 있을 때
    $this->alertMessage('msg_not_permitted_member3');
    elseif (in_array('2',$grants['view'])) //그룹2에게 보기 권한이 있을 때
    $this->alertMessage('msg_not_permitted_member2');
    elseif (in_array('1',$grants['view'])) // 그룹1에게 보기 권한이 있을 때
    $this->alertMessage('msg_not_permitted_member1');
    else
    $this->alertMessage('msg_not_permitted');

    } else {
    // 브라우저 타이틀에 글의 제목을 추가
    Context::addBrowserTitle($oDocument->getTitleText());
    • 2009.01.17 15:16 신고
      댓글 주소 수정/삭제
      ModuelObject 파일에

      // 권한값을알기위한설정
      Context::set('grants', $this->module_info->grants);

      이 부분이 있는지,

      board.view.php 파일에 입력하신 부분의 해당 함수 앞부분에

      $grants = Context::get('grants');

      이 부분이 있는지
      확인해주세요 :)
  3. 조현우
    2009.01.17 15:34
    댓글 주소 수정/삭제 댓글
    다있네요. ^^
    제로보드홈에 남기신 팁대로 파일들을 수정했습니다.
    음... 제가 몰 잘못 건드렸을까요..