안녕하세요.
워드프레스 알림판에서 아래와 같은 PHP Error Log 가 떴네요...
보통 웬만한건 무시해 왔는데 이건 Fatal Error라고 하니 무시하면 안될것 같아서요...
최근에 한 일이라면 K보드 플러그인 업데이트 한 것 밖에 없는데 무슨 문제가 생긴걸까요?
Nov 20, 16:25:05
Fatal error: Uncaught Error: Class 'KBCommentList' not found in /home/pkists54/public_html/wp-content/plugins/kboard-comments/class/KBCommentsBuilder.class.php:43
Stack Trace
1.
KBCommentsBuilder->create()
/home/pkists54/public_html/wp-content/plugins/kboard-comments/index.php:124
2.
kboard_comments_builder(Array)
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoard.class.php:184
3.
KBoard->buildComment('83')
/home/pkists54/public_html/wp-content/plugins/kboard/skin/kibon/document.php:80
4.
include('/home/pkists54/...')
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoardSkin.class.php:156
5.
KBoardSkin->load('kibon', 'document.php', Array)
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoardBuilder.class.php:544
6.
KBoardBuilder->builderDocument()
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoardBuilder.class.php:309
7.
KBoardBuilder->create()
/home/pkists54/public_html/wp-content/plugins/kboard/index.php:743
8.
/home/pkists54/public_html/wp-content/pl in /home/pkists54/public_html/wp-content/plugins/kboard-comments/class/KBCommentsBuilder.class.php on line 43
코드를 올려주실 땐 전체 코드보다는 수정하신 코드만 올려주시길 부탁드립니다.
코드 상에는 문제없는 듯합니다.
아마도 수정하시면서 뭔가 잘못 수정했을 때 로그가 남은 듯합니다.
현재는 에러 로그가 별도로 표시되지 않는다면 신경 쓰지 않으셔도 될 듯합니다.
고맙습니다.
/wp-content/plugins/kboard-comments/class/KBCommentList.class.php 파일은 잘 있습니다.
오류 발생 시간을 보니 마침 제가 어제 해당 파일을 수정하여 저장한 시간이네요. 수정한 내용은 마지막에 댓글 정렬 순서만 바꾸었습니다.
혹시 코드가 잘못된걸까요?
<?php
/**
* KBoard 워드프레스 게시판 댓글 리스트
* @link www.cosmosfarm.com
* @copyright Copyright 2019 Cosmosfarm. All rights reserved.
* @license http://www.gnu.org/licenses/gpl.html
*/
class KBCommentList {
private $next_list_page = 1;
var $board;
var $total;
var $content_uid;
var $parent_uid;
var $resource;
var $row;
var $sort = 'vote';
var $order = 'DESC';
var $rpp = 20;
var $page = 1;
public function __construct($content_uid=''){
$this->board = new KBoard();
if($this->getSorting() == 'best'){
// 인기순서
$this->sort = 'vote';
$this->order = 'DESC';
}
else if($this->getSorting() == 'oldest'){
// 작성순서
$this->sort = 'created';
$this->order = 'ASC';
}
else if($this->getSorting() == 'newest'){
// 최신순서
$this->sort = 'created';
$this->order = 'DESC';
}
if($content_uid) $this->setContentUID($content_uid);
}
/**
* 댓글 목록을 초기화 한다.
* @return KBCommentList
*/
public function init(){
global $wpdb;
if($this->content_uid){
$orderby = apply_filters('kboard_comments_list_orderby', "`{$this->sort}` {$this->order}", $this);
$this->resource = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `content_uid`='{$this->content_uid}' AND (`parent_uid`<=0 OR `parent_uid` IS NULL) ORDER BY {$orderby}");
}
else{
// 전체 댓글을 불러올땐 최신순서로 정렬한다.
$this->sort = 'created';
$this->order = 'DESC';
$this->resource = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE 1 ORDER BY `{$this->sort}` {$this->order} LIMIT ".($this->page-1)*$this->rpp.",{$this->rpp}");
}
$wpdb->flush();
return $this;
}
/**
* 고유번호로 댓글 목록을 초기화 한다.
* @param int $content_uid
* @return KBCommentList
*/
public function initWithUID($content_uid){
$this->setContentUID($content_uid);
$this->init();
return $this;
}
/**
* 부모 고유번호로 초기화 한다.
* @param int $parent_uid
* @return KBCommentList
*/
public function initWithParentUID($parent_uid){
global $wpdb;
$this->parent_uid = $parent_uid;
$orderby = apply_filters('kboard_comments_list_orderby', "`{$this->sort}` {$this->order}", $this);
$this->resource = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$this->parent_uid}' ORDER BY {$orderby}");
$this->total = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$this->parent_uid}'");
$wpdb->flush();
return $this;
}
/**
* 한 페이지에 표시될 댓글 개수를 입력한다.
* @param int $rpp
* @return KBCommentList
*/
public function rpp($rpp){
$rpp = intval($rpp);
if($rpp <= 0){
$this->rpp = 10;
}
else{
$this->rpp = $rpp;
}
return $this;
}
/**
* 댓글을 검색해 리스트를 초기화한다.
* @param string $keyword
* @return KBCommentList
*/
public function initWithKeyword($keyword=''){
global $wpdb;
if($keyword){
$keyword = esc_sql($keyword);
$where = "`content` LIKE '%$keyword%'";
}
else{
$where = '1=1';
}
$offset = ($this->page-1)*$this->rpp;
$results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_comments` WHERE $where ORDER BY `uid` DESC LIMIT $offset,$this->rpp");
foreach($results as $row){
$select_uid[] = intval($row->uid);
}
if(!isset($select_uid)){
$this->total = 0;
$this->resource = array();
}
else{
$this->total = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_comments` WHERE $where");
$this->resource = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `uid` IN(".implode(',', $select_uid).") ORDER BY `uid` DESC");
}
$wpdb->flush();
return $this;
}
/**
* 게시판 정보를 반환한다.
* @return KBoard
*/
public function getBoard(){
if(isset($this->board->id) && $this->board->id){
return $this->board;
}
else if($this->content_uid){
$this->board = new KBoard();
$this->board->initWithContentUID($this->content_uid);
return $this->board;
}
return new KBoard();
}
/**
* 게시물 고유번호를 입력받는다.
* @param int $content_uid
*/
public function setContentUID($content_uid){
$this->content_uid = intval($content_uid);
}
/**
* 총 댓글 개수를 반환한다.
* @return int
*/
public function getCount(){
global $wpdb;
if(is_null($this->total)){
if($this->content_uid){
$this->total = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_comments` WHERE `content_uid`='{$this->content_uid}'");
}
else{
$this->total = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_comments` WHERE 1");
}
}
return intval($this->total);
}
/**
* 리스트를 초기화한다.
*/
public function initFirstList(){
$this->next_list_page = 1;
}
/**
* 다음 리스트를 반환한다.
* @return array
*/
public function hasNextList(){
global $wpdb;
$offset = ($this->next_list_page-1)*$this->rpp;
$this->resource = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `content_uid`='{$this->content_uid}' ORDER BY `{$this->sort}` {$this->order} LIMIT {$offset},{$this->rpp}");
$wpdb->flush();
if($this->resource){
$this->next_list_page++;
}
else{
$this->next_list_page = 1;
}
return $this->resource;
}
/**
* 다음 댓글을 반환한다.
* @return Comment
*/
public function hasNext(){
if(!$this->resource) return '';
$this->row = current($this->resource);
if($this->row){
next($this->resource);
$comment = new KBComment();
$comment->initWithRow($this->row);
$comment->board = $this->board;
return $comment;
}
else{
unset($this->resource);
return '';
}
}
/**
* 댓글 고유번호를 입력받아 해당 댓글을 반환한다.
* @param int $uid
* @return KBComment
*/
public function getComment($uid){
$comment = new KBComment();
$comment->initWithUID($row);
return $comment;
}
/**
* 댓글 정보를 입력한다.
* @param int $parent_uid
* @param int $user_uid
* @param string $user_display
* @param string $content
* @param string $password
*/
public function add($parent_uid, $user_uid, $user_display, $content, $password=''){
global $wpdb;
$content_uid = $this->content_uid;
$parent_uid = intval($parent_uid);
$user_uid = intval($user_uid);
$user_display = esc_sql(sanitize_text_field($user_display));
$content = esc_sql(kboard_safeiframe(kboard_xssfilter($content)));
$like = 0;
$unlike = 0;
$vote = 0;
$created = date('YmdHis', current_time('timestamp'));
$password = esc_sql(sanitize_text_field($password));
$wpdb->query("INSERT INTO `{$wpdb->prefix}kboard_comments` (`content_uid`, `parent_uid`, `user_uid`, `user_display`, `content`, `like`, `unlike`, `vote`, `created`, `password`) VALUES ('$content_uid', '$parent_uid', '$user_uid', '$user_display', '$content', '$like', '$unlike', '$vote', '$created', '$password')");
$insert_id = $wpdb->insert_id;
// 댓글 숫자를 게시물에 등록한다.
$update = date('YmdHis', current_time('timestamp'));
$wpdb->query("UPDATE `{$wpdb->prefix}kboard_board_content` SET `comment`=`comment`+1, `update`='{$update}' WHERE `uid`='{$content_uid}'");
// 댓글 입력 액션 훅 실행
do_action('kboard_comments_insert', $insert_id, $content_uid, $this->getBoard());
return $insert_id;
}
/**
* 댓글을 삭제한다.
* @param int $uid
*/
public function delete($uid){
$comment = new KBComment();
$comment->initWithUID($uid);
$comment->delete();
}
/**
* 정렬 순서를 반환한다.
* @return string
*/
public function getSorting(){
static $kboard_comments_sort;
if($kboard_comments_sort){
return $kboard_comments_sort;
}
$kboard_comments_sort = isset($_COOKIE['kboard_comments_sort']) ? $_COOKIE['kboard_comments_sort'] : 'oldest';
if(!in_array($kboard_comments_sort, array('best', 'oldest', 'newest'))){
$kboard_comments_sort = 'oldest';
}
return $kboard_comments_sort;
}
}
안녕하세요~^^
KBoard 게시판 플러그인과 댓글 플러그인 모두 최신 버전으로 업데이트하셨는지요?
해당 에러 메시지는 KBCommentsBuilder.class.php 파일에서
KBCommentList 클래스를 사용하지 못해서 표시되는 듯합니다.
업데이트가 정상적으로 됐는지 확인해보셔야 할 듯합니다.
FTP로 접속해서 /wp-content/plugins/kboard-comments/class/KBCommentList.class.php 파일이 있는지 확인해보세요.
디버그 모드를 활성화해서 페이지에 에러 메시지가 표시되는지도 확인해보시겠어요?
고맙습니다.
오류 로그 발생 이외에 게시판과 댓글은 정상 동작중입니다.
그래도 신경이 쓰이네요^^;;