질문/조언질답게시판
Extra Form
PHP PHP 7.0
CMS Rhymix 2.x

xe 에서 라이믹스로 옮긴 사이트입니다. 라이믹스 1.9.9.1 버전을 사용하면서 모듈이나 위젯을 업데이트 했는데요 referer 만 설정완료하기 버튼이 사라지지 않습니다.

referer.PNG

에러로그도 없습니다. 흠.. 아직은 리퍼러가 필요해서 사용할려고 하거든요,,

 

2.0.14 로 패치해봤는데도 여전히 사라지지 않네요,. 캐시지워도 변함이 없습니다.

  • profile
    저기 관리자 메인페이지에서 뜨는 설정완료하기는 캐시와는 전혀 관계가 없습니다.
    리퍼러.class.php 파일내에 checkUpdate 함수 안에서 return true 날리는 조건문이 어떤것인지 찾아 왜 그렇게 조건이 나오는지를 직접 디버깅 해봐야 하므로.. 디버깅에 대한 의뢰를 남기시는 것이 좋겠습니다.
  • profile ?
    네 감사합니다.
  • profile

    왜 오류를 일으키는지는 모르겠지만 DB 부하를 많이 일으키는 것으로 악명높은(?) 모듈이니, 이번 기회에서 삭제하고 구글 애널리틱스 등 외부 서비스로 대체하시지요. ㅎㅎ

  • profile ?
    넵... 감사합니다,
  • profile

    refer 버전에 따라 달라질텐데, 제가 테스트 사이트(라이믹스 2.x)에서 3.12.1을 쓰고 있는데, php 8에서 쓰다보니까 몇몇가지 수정해야 합니다. 몇가지 잡아야 할 버그도 있구요. 그래도 돌아는 갑니다 ㅎ.

  • profile ?
    네 일단 돌아는 가더라고요
  • profile

    저도 같은 상황이었는데요.
    귀찮아서 소스코드까지 파악은 안했었는데... 마음먹고 했습니다.
    예전 버전으로 만든 것이면 현재 db구조와 새 버전의 db구조가 다르더군요.

    업데이트 확인하는 코드가

     

       function checkUpdate() {
             $oDB = &DB::getInstance();
            
            if(!$oDB->isColumnExists("referer_log", "idx")) return true;
            if(!$oDB->isColumnExists("referer_log", "remote")) return true;
            if(!$oDB->isColumnExists("referer_statistics", "idx")) return true;
            if(!$oDB->isColumnExists("referer_remote_statistics", "idx")) return true;
            if(!$oDB->isColumnExists("referer_uagent_statistics", "idx")) return true;
            if(!$oDB->isIndexExists("referer_log","unique_referer_log")) return true;
            if(!$oDB->isIndexExists("referer_statistics","unique_host")) return true;
            if(!$oDB->isIndexExists("referer_remote_statistics","unique_remote")) return true;
            if(!$oDB->isIndexExists("referer_uagent_statistics","unique_uagent")) return true;
    
            return false;
        }

     

    인데

     

    if(!$oDB->isColumnExists("referer_log", "idx")) return true;

    앞에가 테이블, 뒤가 필드명입니다.

    referer_log테이블에 idx필드가 있는지를 확인합니다.

    없더군요.

     

    스키마 폴더의 referer_log.xml 파일 참고해서 

    테이블에서 기존 프라이머리 제거하고 idx를 프라이머리, 자동증가 넣어서 만들어주고

    host 등 필드에 unique_referer_log 이름으로 인덱스 추가해주고 할려는데...

    기존에 만들어진게 host가 유니크가 아니어서....

    (유니크: 해당 테이블에 그 값은 유일한...)

    기존 값들을 1개씩만 남기고 지워야 하더군요.

    유니크가 아닌 인덱스로 지정할수도 있겠지만요.

     

    그래서 referer_XXXXX

    테이블 다 날렸습니다.

    그리고 관리자에서 다시 설정하니 안뜨네요.... -0-;;;;;;;

     

    선택지는 둘중 하나가 되겠습니다.

    1. 기존 테이블 날리고 새로 만드는 것

    2. 기존 테이블의 구조를 변경하고, 입력된 데이터를 모두 정리하는 것. -0-;;;;;;;

  • profile

    아..... 위에 적은 코드 부분의 내부를 날려버리는 것도 방법이군요.-0-;;;