트랙백 오류

sendTrackback이 실행되는 도중 오류가 발생하는 것으로 추정하고 sendTrackback에서 트랙백의 전송을 막는 코드를 찾았다. 조금 의외지만 이 문제는 sendTrackback를 고침으로서 해결할 수 있었다. 따라서 나처럼 트랙백은 잘 갔는데 정작 '트랙백을 보낼 수 없다'는 오류 메시지가 뜬다면 다음 절차를 시도해 보기 바란다. 물론 이 문제는 모든 사용자에게 발생하는 문제는 아니며 카페24에서 웹 호스팅을 받는 일부 계정에서 발생하는 것으로 추정하고 있다.

를 사용하면서 상당히 오랜 기간 고민한 문제가 있다. 바로 '트랙백 문제'이다. 트랙백은 정상적으로 전송된다. 그러나 항상 트랙백을 보낼 수 없다는 메시지가 뜬다. 판번호는 정확히 기억나지 않지만 1.5판 부터였던 것 같다. 처음에는 텍스트큐브의 버그로 생각했다. 그래서 판올림이 되면 이런 문제가 사라질 것으로 생각했다. 그러나 판올림이 되도 같은 증상이었다. 문제를 해결하기 위해 소스를 뒤졌지만 기본적으로 오류 메시지를 AJAX를 통해 출력하기 때문에 소스를 확인하는 것도 힘들었다.

그러던 중 우연히 새로 설치한 에서는 이런 문제가 발생하지 않는다는 것을 알았다. 사용하고 있는 플러그인의 문제인가 싶어서 플러그인을 모두 끄고 확인했지만 결과는 같았다. 호스팅을 받고 있는 서버의 문제인가 싶어서 호스팅 업체에 문의했지만 역시 원인을 알 수 없었다. 여기에 요즘은 블로거뉴스에 글을 자동으로 송고하기 위해 플러그인을 사용한다. 기본적으로 블로거뉴스 플러그인도 블로거뉴스에 트랙백을 쏘고 그 결과를 가져오는 플러그인이다. 이렇다 보니 블로거뉴스에 송고한 글을 저장하려고 하면 항상 '저장할 수 없다'는 메시지가 나타난다.

블로거뉴스에 글을 송고하는 것도 쉽지 않다. 트랙백 전송이 실패한 것으로 나타나기 때문에 실제 글이 송고되도 플러그인에서는 송고 되지 않은 것으로 판단한다. 따라서 글을 송고해도 추천 단추가 표시되지 않았다. 결국 지금까지는 글을 두번씩 저장하는 방법으로 이 문제를 해결해 왔다. 그런데 글을 이렇게 송고하면 또 문제가 발생한다. 글을 두번 저장하면 어떨 때는 블로거뉴스에 글이 두번 송고되는 현상이 발생하기 때문이다.

얼마 전에 올린 글처럼 다음 블로거뉴스의 API 정책이 바뀐 덕에 블로거뉴스 플러그인이 동작하지 않았다. 원인을 파악해서 블로거뉴스 패치에 대한 글을 올렸다. 이러다 보니 이번에는 트랙백 문제도 반드시 해결해야 하겠다는 생각이 들었다. 오류 메시지를 쉽게 확인할 수 없어 트랙백을 보낼 때 응답을 스니퍼링해서 확인했다. 그리고 내 블로그에서 트랙백을 보낼 때는 아예 응답 메시지가 출력되지 않는다는 것을 알았다.

텍스트큐브에서 트랙백은 interface/trackback/send/index.php에서 트랙백 폼을 만든다. 그리고 interface/.../.../.../send/index.php에서 트랙백을 처리한다. interface/.../.../.../send/index.phplibrary/.../Textcube.Function.Respod.phpResultPage를 이용해서 sendTrackback의 결과에 따라 XML 형식의 오류 메시지를 출력한다. 그런데 재미있는 것은 sendTrackback를 사용하면 트랙백의 전송 여부와 무관하에 오류 메시지 자체가 출력되지 않았다. 즉, interface/.../.../.../send/index.php에서 sendTrackback을 제거하면 메시지가 정상적으로 출력된다. 그러나 sendTrackback가 포함되어 있으면 sendTrackback이 어떤 값을 리턴하든 오류 메시지가 출력되지 않았다.

결국 sendTrackback이 실행되는 도중 오류가 발생하는 것으로 추정하고 sendTrackback에서 트랙백의 전송을 막는 코드를 찾았다. 조금 의외지만 이 문제는 sendTrackback를 다음처럼 고침으로서 해결할 수 있었다. 따라서 나처럼 트랙백은 잘 갔는데 정작 '트랙백을 보낼 수 없다'는 오류 메시지가 뜬다면 다음 절차를 시도해 보기 바란다. 물론 이 문제는 모든 사용자에게 발생하는 문제는 아니며 에서 웹 호스팅을 받는 일부 계정에서 발생하는 것으로 추정하고 있다.

  1. 좋아하는 편집기를 이용해서 library/model/blog.trackback.php 파일을 읽어 들인다.
  2. sendTrackback의 다음 부분을 고치기 전에서 고친 뒤로 수정한다.

    // 고치기 전
    
    $entry['content'] = getEntryContentView($blogid, $entryId, $entry['content'],
    $entry['contentFormatter'], getKeywordNames($blogid));
    $excerpt = str_tag_on(UTF8::lessen(removeAllTags(stripHTML($entry['content'])), 255));
    
    // 고친 뒤
    
    //  $entry['content'] = getEntryContentView($blogid, $entryId, $entry['content'],
    $entry['contentFormatter'], getKeywordNames($blogid));
    $excerpt = str_tag_on(UTF8::lessen(stripHTML($entry['content']), 255));
    

코드를 보면 알 수 있지만 $entry['content'] 행을 주석처리하고 이어지는 행에서 removeAllTags 함수를 제거하면 정상적으로 트랙백이 전송된다. removeAllTags를 제거했기 때문에 전송된 트랙백에는 일부 태그가 포함될 수 있다. getEntryContentView 함수나 removeAllTags 함수 모두 다른 플러그인에서는 정상적으로 동작한다. 따라서 이런 문제가 발생하는 근본적인 원인은 나도 알 수 없었다.

관련 글타래