<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
	<channel>
				<title><![CDATA[PHP Error Log 치명적인 오류라는데 뭐가 잘못된걸까요?]]></title>
		<link>https://www.cosmosfarm.com/threads/rss/document/38882</link>
		<description><![CDATA[<p>안녕하세요.</p>

<p>워드프레스 알림판에서 아래와 같은 PHP Error Log 가 떴네요...</p>

<p>보통 웬만한건 무시해 왔는데 이건 Fatal Error라고 하니 무시하면 안될것 같아서요...</p>

<p>최근에 한 일이라면 K보드 플러그인 업데이트 한 것 밖에 없는데 무슨 문제가 생긴걸까요?</p>

<pre>
<code>
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-&gt;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-&gt;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-&gt;load('kibon', 'document.php', Array)
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoardBuilder.class.php:544
6.	
KBoardBuilder-&gt;builderDocument()
/home/pkists54/public_html/wp-content/plugins/kboard/class/KBoardBuilder.class.php:309
7.	
KBoardBuilder-&gt;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</code></pre>

<p> </p>]]></description>
		<copyright>Copyright 2026, 코스모스팜</copyright>
				<item>
			<title><![CDATA[코드를 올려주실 땐 전체 코드보다는 수정하신 코드만 올려주시길 부탁드립니다.

코드 상에는 문제없는...]]></title>
			<link>https://www.cosmosfarm.com/threads/document/38905</link>
			<description><![CDATA[<p>코드를 올려주실 땐 전체 코드보다는 수정하신 코드만 올려주시길 부탁드립니다.</p>

<p>코드 상에는 문제없는 듯합니다.</p>

<p>아마도 수정하시면서 뭔가 잘못 수정했을 때 로그가 남은 듯합니다.</p>

<p>현재는 에러 로그가 별도로 표시되지 않는다면 신경 쓰지 않으셔도 될 듯합니다.</p>

<p>고맙습니다.</p>]]></description>
			<author>스레드봇</author>
			<pubDate>Thu, 21 Nov 2019 07:13:35 +0000</pubDate>
			<category>KBoard</category>
		</item>
				<item>
			<title><![CDATA[/wp-content/plugins/kboard-comments/class/KBCommentList.class.php 파일은 잘 있습니다.

오류 발생 ...]]></title>
			<link>https://www.cosmosfarm.com/threads/document/38897</link>
			<description><![CDATA[<p>/wp-content/plugins/kboard-comments/class/KBCommentList.class.php 파일은 잘 있습니다.</p>

<p>오류 발생 시간을 보니 마침 제가 어제 해당 파일을 수정하여 저장한 시간이네요. 수정한 내용은 마지막에 댓글 정렬 순서만 바꾸었습니다. </p>

<p>혹시 코드가 잘못된걸까요?</p>

<pre>
<code>&lt;?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-&gt;board = new KBoard();
		
		if($this-&gt;getSorting() == 'best'){
			// 인기순서
			$this-&gt;sort = 'vote';
			$this-&gt;order = 'DESC';
		}
		else if($this-&gt;getSorting() == 'oldest'){
			// 작성순서
			$this-&gt;sort = 'created';
			$this-&gt;order = 'ASC';
		}
		else if($this-&gt;getSorting() == 'newest'){
			// 최신순서
			$this-&gt;sort = 'created';
			$this-&gt;order = 'DESC';
		}
		
		if($content_uid) $this-&gt;setContentUID($content_uid);
	}
	
	/**
	 * 댓글 목록을 초기화 한다.
	 * @return KBCommentList
	 */
	public function init(){
		global $wpdb;
		if($this-&gt;content_uid){
			$orderby = apply_filters('kboard_comments_list_orderby', "`{$this-&gt;sort}` {$this-&gt;order}", $this);
			
			$this-&gt;resource = $wpdb-&gt;get_results("SELECT * FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `content_uid`='{$this-&gt;content_uid}' AND (`parent_uid`&lt;=0 OR `parent_uid` IS NULL) ORDER BY {$orderby}");
		}
		else{
			// 전체 댓글을 불러올땐 최신순서로 정렬한다.
			$this-&gt;sort = 'created';
			$this-&gt;order = 'DESC';
			$this-&gt;resource = $wpdb-&gt;get_results("SELECT * FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE 1 ORDER BY `{$this-&gt;sort}` {$this-&gt;order} LIMIT ".($this-&gt;page-1)*$this-&gt;rpp.",{$this-&gt;rpp}");
		}
		$wpdb-&gt;flush();
		return $this;
	}
	
	/**
	 * 고유번호로 댓글 목록을 초기화 한다.
	 * @param int $content_uid
	 * @return KBCommentList
	 */
	public function initWithUID($content_uid){
		$this-&gt;setContentUID($content_uid);
		$this-&gt;init();
		return $this;
	}
	
	/**
	 * 부모 고유번호로 초기화 한다.
	 * @param int $parent_uid
	 * @return KBCommentList
	 */
	public function initWithParentUID($parent_uid){
		global $wpdb;
		$this-&gt;parent_uid = $parent_uid;
		
		$orderby = apply_filters('kboard_comments_list_orderby', "`{$this-&gt;sort}` {$this-&gt;order}", $this);
		
		$this-&gt;resource = $wpdb-&gt;get_results("SELECT * FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `parent_uid`='{$this-&gt;parent_uid}' ORDER BY {$orderby}");
		$this-&gt;total = $wpdb-&gt;get_var("SELECT COUNT(*) FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `parent_uid`='{$this-&gt;parent_uid}'");
		$wpdb-&gt;flush();
		return $this;
	}
	
	/**
	 * 한 페이지에 표시될 댓글 개수를 입력한다.
	 * @param int $rpp
	 * @return KBCommentList
	 */
	public function rpp($rpp){
		$rpp = intval($rpp);
		if($rpp &lt;= 0){
			$this-&gt;rpp = 10;
		}
		else{
			$this-&gt;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-&gt;page-1)*$this-&gt;rpp;
		
		$results = $wpdb-&gt;get_results("SELECT `uid` FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE $where ORDER BY `uid` DESC LIMIT $offset,$this-&gt;rpp");
		foreach($results as $row){
			$select_uid[] = intval($row-&gt;uid);
		}
		
		if(!isset($select_uid)){
			$this-&gt;total = 0;
			$this-&gt;resource = array();
		}
		else{
			$this-&gt;total = $wpdb-&gt;get_var("SELECT COUNT(*) FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE $where");
			$this-&gt;resource = $wpdb-&gt;get_results("SELECT * FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `uid` IN(".implode(',', $select_uid).") ORDER BY `uid` DESC");
		}
		
		$wpdb-&gt;flush();
		return $this;
	}
	
	/**
	 * 게시판 정보를 반환한다.
	 * @return KBoard
	 */
	public function getBoard(){
		if(isset($this-&gt;board-&gt;id) &amp;&amp; $this-&gt;board-&gt;id){
			return $this-&gt;board;
		}
		else if($this-&gt;content_uid){
			$this-&gt;board = new KBoard();
			$this-&gt;board-&gt;initWithContentUID($this-&gt;content_uid);
			return $this-&gt;board;
		}
		return new KBoard();
	}
	
	/**
	 * 게시물 고유번호를 입력받는다.
	 * @param int $content_uid
	 */
	public function setContentUID($content_uid){
		$this-&gt;content_uid = intval($content_uid);
	}
	
	/**
	 * 총 댓글 개수를 반환한다.
	 * @return int
	 */
	public function getCount(){
		global $wpdb;
		if(is_null($this-&gt;total)){
			if($this-&gt;content_uid){
				$this-&gt;total = $wpdb-&gt;get_var("SELECT COUNT(*) FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `content_uid`='{$this-&gt;content_uid}'");
			}
			else{
				$this-&gt;total = $wpdb-&gt;get_var("SELECT COUNT(*) FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE 1");
			}
		}
		return intval($this-&gt;total);
	}
	
	/**
	 * 리스트를 초기화한다.
	 */
	public function initFirstList(){
		$this-&gt;next_list_page = 1;
	}
	
	/**
	 * 다음 리스트를 반환한다.
	 * @return array
	 */
	public function hasNextList(){
		global $wpdb;
		
		$offset = ($this-&gt;next_list_page-1)*$this-&gt;rpp;
		
		$this-&gt;resource = $wpdb-&gt;get_results("SELECT * FROM `{$wpdb-&gt;prefix}kboard_comments` WHERE `content_uid`='{$this-&gt;content_uid}' ORDER BY `{$this-&gt;sort}` {$this-&gt;order} LIMIT {$offset},{$this-&gt;rpp}");
		$wpdb-&gt;flush();
		
		if($this-&gt;resource){
			$this-&gt;next_list_page++;
		}
		else{
			$this-&gt;next_list_page = 1;
		}
		
		return $this-&gt;resource;
	}
	
	/**
	 * 다음 댓글을 반환한다.
	 * @return Comment
	 */
	public function hasNext(){
		if(!$this-&gt;resource) return '';
		$this-&gt;row = current($this-&gt;resource);
		
		if($this-&gt;row){
			next($this-&gt;resource);
			$comment = new KBComment();
			$comment-&gt;initWithRow($this-&gt;row);
			$comment-&gt;board = $this-&gt;board;
			return $comment;
		}
		else{
			unset($this-&gt;resource);
			return '';
		}
	}
	
	/**
	 * 댓글 고유번호를 입력받아 해당 댓글을 반환한다.
	 * @param int $uid
	 * @return KBComment
	 */
	public function getComment($uid){
		$comment = new KBComment();
		$comment-&gt;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-&gt;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-&gt;query("INSERT INTO `{$wpdb-&gt;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-&gt;insert_id;
		
		// 댓글 숫자를 게시물에 등록한다.
		$update = date('YmdHis', current_time('timestamp'));
		$wpdb-&gt;query("UPDATE `{$wpdb-&gt;prefix}kboard_board_content` SET `comment`=`comment`+1, `update`='{$update}' WHERE `uid`='{$content_uid}'");
		
		// 댓글 입력 액션 훅 실행
		do_action('kboard_comments_insert', $insert_id, $content_uid, $this-&gt;getBoard());
		
		return $insert_id;
	}
	
	/**
	 * 댓글을 삭제한다.
	 * @param int $uid
	 */
	public function delete($uid){
		$comment = new KBComment();
		$comment-&gt;initWithUID($uid);
		$comment-&gt;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;
	}
}</code></pre>

<p> </p>]]></description>
			<author>2kiya</author>
			<pubDate>Thu, 21 Nov 2019 04:25:12 +0000</pubDate>
			<category>KBoard</category>
		</item>
				<item>
			<title><![CDATA[안녕하세요~^^

KBoard 게시판 플러그인과 댓글 플러그인 모두 최신 버전으로 업데이트하셨는지요?

해...]]></title>
			<link>https://www.cosmosfarm.com/threads/document/38887</link>
			<description><![CDATA[<p>안녕하세요~^^</p>

<p>KBoard 게시판 플러그인과 댓글 플러그인 모두 최신 버전으로 업데이트하셨는지요?</p>

<p>해당 에러 메시지는 KBCommentsBuilder.class.php 파일에서</p>

<p>KBCommentList 클래스를 사용하지 못해서 표시되는 듯합니다.</p>

<p>업데이트가 정상적으로 됐는지 확인해보셔야 할 듯합니다.</p>

<p>FTP로 접속해서 /wp-content/plugins/kboard-comments/class/KBCommentList.class.php 파일이 있는지 확인해보세요.</p>

<p> </p>

<p>디버그 모드를 활성화해서 페이지에 에러 메시지가 표시되는지도 확인해보시겠어요?</p>

<p><a href="https://blog.naver.com/PostView.nhn?blogId=chan2rrj&amp;logNo=221223664194" target="_blank">워드프레스 에러 확인하기 - 디버그 모드 활성화 방법</a></p>

<p>고맙습니다.</p>]]></description>
			<author>스레드봇</author>
			<pubDate>Thu, 21 Nov 2019 01:04:10 +0000</pubDate>
			<category>KBoard</category>
		</item>
				<item>
			<title><![CDATA[오류 로그 발생 이외에 게시판과 댓글은 정상 동작중입니다. 

그래도 신경이 쓰이네요^^;;]]></title>
			<link>https://www.cosmosfarm.com/threads/document/38883</link>
			<description><![CDATA[<p>오류 로그 발생 이외에 게시판과 댓글은 정상 동작중입니다. </p>

<p>그래도 신경이 쓰이네요^^;;</p>]]></description>
			<author>2kiya</author>
			<pubDate>Thu, 21 Nov 2019 00:06:13 +0000</pubDate>
			<category>KBoard</category>
		</item>
			</channel>
</rss>