어드민 입력 필드 설정에서 체크박스에 라벨을 2가지 주고, editor.php 화면에서 2가지를 모두 체크하고 서브밋하면 document.php에서 에러가 납니다.

어드민 "입력 필드 설정"에서 체크박스 타입 필드에 라벨을 2가지 주고, editor.php 화면에서 2가지를 모두 체크하고 서브밋하면 document.php에서 에러가 납니다.

$content에 값은 잘 들어가 있는데 document.php에서 "이 웹사이트에 치명적인 오류가 있습니다." 라는 php 에러가 뜨네요.
콘솔에는 "Failed to load resource: the server responded with a status of 500 ()" 이렇게 되네요.

작업하던 스킨에 문제가 있는 줄 알았는데 기본 스킨으로 설정해도 똑같은 에러가 납니다.
해당 체크박스 필드가 값이 여러개가 되면서 배열형식이 되었는데 읽어올 때는 단순 변수로 읽어오려고 해서 에러가 난 게 아닌가 싶지만
"게시글 본문에 표시"를 체크하지 않아서 본문에서는 읽어올 일이 없어서 뭐때문에 이런 에러가 나는지 모르겠네요.

무엇이 문제인지 알 수 있을까요?

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    워드프레스 사이트에서 "이 웹사이트에 치명적인 오류가 있습니다." 문구가 표시된다면

    해당 문구만으로는 원인을 파악하기 어렵기 때문에

    디버그 모드를 활성화해서 어떤 에러 메시지가 표시되는지 확인해보셔야 할 듯합니다.

    디버그 모드 활성화 방법은 아래 링크를 참고 부탁드립니다.

    워드프레스 에러 확인하기 - 디버그 모드 활성화 방법

    고맙습니다.

  • php 에러 메세지 출력했더니 이렇게 나오네요.

    Fatal error: Uncaught TypeError: unserialize(): Argument #1 ($data) must be of type string, array given in /home/WWW/docroot/wp-content/plugins/kboard/class/KBContentOption.class.php:24
    Stack trace:
    #0 /home/WWW/docroot/wp-content/plugins/kboard/class/KBContentOption.class.php(24): unserialize()
    #1 /home/WWW/docroot/wp-content/plugins/kboard/class/KBoardFields.class.php(709): KBContentOption->__get()
    #2 /home/WWW/docroot/wp-content/plugins/kboard/class/KBContent.class.php(1766): KBoardFields->getDocumentValuesHTML()
    #3 /home/WWW/docroot/wp-content/plugins/kboard/skin/request-original-text/document.php(97): KBContent->getDocumentOptionsHTML()
    #4 /home/WWW/docroot/wp-content/plugins/kboard/class/KBoardSkin.class.php(156): include('...')
    #5 /home/WWW/docroot/wp-content/plugins/kboard/class/KBoardBuilder.class.php(554): KBoardSkin->load()
    #6 /home/WWW/docroot/wp-content/plugins/kboard/class/KBoardBuilder.class.php(312): KBoardBuilder->builderDocument()
    #7 /home/WWW/docroot/wp-content/plugins/kboard/index.php(808): KBoardBuilder->create()
    #8 /home/WWW/docroot/wp-content/plugins/kboard/index.php(833): kboard_builder()
    #9 /home/WWW/docroot/wp-includes/class-wp-hook.php(303): kboard_auto_builder()
    #10 /home/WWW/docroot/wp-includes/plugin.php(189): WP_Hook->apply_filters()
    #11 /home/WWW/docroot/wp-includes/post-template.php(253): apply_filters()
    #12 /home/WWW/docroot/wp-content/themes/testdir/template-parts/content/content-page.php(7): the_content()
    #13 /home/WWW/docroot/wp-includes/template.php(772): require('...')
    #14 /home/WWW/docroot/wp-includes/template.php(716): load_template()
    #15 /home/WWW/docroot/wp-includes/general-template.php(204): locate_template()
    #16 /home/WWW/docroot/wp-content/themes/testdir/page.php(18): get_template_part()
    #17 /home/WWW/docroot/wp-includes/template-loader.php(106): include('...')
    #18 /home/WWW/docroot/wp-blog-header.php(19): require_once('...')
    #19 /home/WWW/docroot/index.php(17): require('...')
    #20 {main} thrown in
    /home/WWW/docroot/wp-content/plugins/kboard/class/KBContentOption.class.php on line 24

    문제가 되는 체크박스의 메타키는 'agreement' 이고 디비에는 잘 입력된 것 같습니다. 저 값이 배열이 아니고 1개일 때는 잘 작동하는데 2개가 되면 에러가 납니다.

    [option] => KBContentOption Object
            (
                [content_uid] => 122
                [row] => Array
                    (
                        [dept] => -
                        [student_id] => -
                        [email] => -
                        [tel] => -
                        [ip] => ***.***.***.***
                        [paper_title] => 빅데이터와 통계학
                        [class_dept] => 통계학과
                        [degree] => Master
                        [year_month] => 2021-11
                        [reason] => 연구 목적
                        [agreement] => Array
                            (
                                [0] => 개인정보 수집 및 이용에 동의합니다.
                                [1] => 위와 같이 학위논문 원문 파일을 신청합니다.
                            )
    
                    )
    
            )
    
  • 올려주신 내용으로 동일하게 설정하여 동작했으나

    저희쪽 환경에서는 에러가 발생되지 않았습니다.

     

    혹시 KBoard가 최신버전이 아니라면

    KBoard을 최신버전으로 업데이트 해주시겠어요?

     

    잠시 다른 테마로 바꿔서도 확인해보시고

    다른 플러그인을 하나씩 비활성화해가면서 충돌이 있는지도 점검해보셔야 할 듯합니다.

     

    점검 후에도 동일한 에러가 발생한다면

    저희 고객지원 쪽 이메일로 워드프레스 관리자 계정과

    FTP 접속 정보를 보내주시면 점검해드리겠습니다.

    메일 내용에는 커뮤니티의 링크도 포함해주세요.

    고맙습니다.

  • 업데이트로 해결되었습니다.

  • 업데이트로 해결된 줄 알았더니 아니었네요.
    저희 진행중인 프로젝트 개발쪽에서 검토하셨는데 kboard가 php 8.0 환경에 대응이 안되어서 발생한 오류였다고 합니다.
    https://github.com/cosmosfarm/KBoard-wordpress-plugin 를 통해 최신 버젼(2021.11.11 패치본)으로 업데이트 해서
    이전에 나왔던 PHP 8.0 환경 오류들은 패치가 되었는데, 위 문제만큼은 해결이 안되어서
    /wp-content/plugins/kboard/class/KBContentOption.class.php 파일 24번째 줄의
    unserialize() 함수의 인자값의 타입을 정수로 바꿔주는 방식으로 해결하셨다고 합니다.

    다음 패치에 참고하실 수 있을 것 같아서 커멘트 남깁니다.

  • 해당 부분 조치되어 다음 업데이트에 반영될 코드

    안내드립니다.

     

    wp-content/plugins/kboard/class/KBContentOption.class.php 파일 중 기존의 아래 코드를

    $object = @unserialize($this->row[$key]);

    아래와 같이 변경하시면 오류를 해결 하실 수 있습니다.

    $object = $this->row[$key];
    if(is_string($this->row[$key])){
    		$object = @unserialize($this->row[$key]);
    }

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기