개발자

DEVELOPERS

개발자 문서

KCMS 위에 무언가를 만들거나 확장하려는 분들을 위한 글입니다. 그냥 쓰는 법은 사용법 에 있습니다.

시작하기

KCMS 는 어떤 기술로 만들어졌나요?

PHP 8.2 이상(FPM) · MariaDB 10.11 이상 · Apache 2.4 + mod_rewrite(AllowOverride All) 위에서 돌아갑니다.

pdo_mysqlDB 접속
mbstring한글 등 멀티바이트 문자열
gd, exif이미지 처리·리사이즈
fileinfo, curl, zip, openssl업로드 검증·외부 연동·압축·보안
진입점이 여러 개인가요?

아닙니다. index.php 하나가 모든 요청을 받는 프론트 컨트롤러입니다. .htaccess 가 실제 파일·폴더가 아닌 요청을 전부 여기로 돌립니다.

app/Core/    Router · Database · Auth · View · Csrf · Validator
             Uploader · Paginator · Config · Request · Response · App
app/Model/   Board · Post · Member · Group · Point · FileModel …
app/Controller/  Home · Board · Member · Memo · Poll · Faq · Qa …
설치·재설치는 어떻게 하나요?

설치 스크립트는 CLI 에서만 실행됩니다 — 브라우저로 접근하면 403 입니다.

php bin/install.php     # 1차 — 스키마 + 기본 데이터 + 관리자 계정
php bin/install2.php    # 2차 — 쪽지·설문·FAQ·Q&A·소셜·로그 테이블
php bin/install3.php    # SEO — sol_seo + 각 테이블 SEO 컬럼 + 슬러그

여러 번 실행해도 안전합니다(있는 것은 건너뜁니다). 다시 만들어야 하면 --reset 을 붙이는데, 그 범위의 데이터가 지워집니다.

설치가 끝나면 관리자 계정이 함께 만들어집니다. 운영으로 넘기기 전에 반드시 비밀번호를 바꿔야 합니다.

게시판·테마

게시판마다 화면을 다르게 꾸밀 수 있나요?

됩니다. 게시판(bo_table)마다 스킨(bo_skin)을 따로 고를 수 있고, 관리자 화면에서 즉시 바꿀 수 있습니다.

  • skin/board/{스킨}/list.php · view.php · write.php … — 목록·읽기·쓰기 화면을 각각 담당
  • 골라 둔 스킨에 파일이 없으면 basic 으로 자동 대체 — 폴더를 지워도 화면이 죽지 않습니다
  • 이 문서·공지사항·자료실은 helpcenter 스킨을 씁니다
사이트 전체 테마도 바꿀 수 있나요?

theme/ 아래 폴더 하나가 테마 하나입니다 — basic · company · community. 관리자 환경설정에서 고른 이름의 폴더가 없으면 조용히 basic 을 씁니다.

테마마다 style.css · user.css · theme-init.js 를 완전히 따로 가지므로, 새 테마는 바꾸고 싶은 파일만 두면 나머지는 basic 것을 그대로 씁니다.

여러 언어를 지원하나요?

lang/ 폴더에 언어별 사전이 있고, 각 페이지에 hreflang 대체 링크가 함께 나갑니다. 화면 오른쪽 아래(또는 헤더)의 언어 전환으로 바꿉니다.

연동

RSS 피드가 있나요?

있습니다. 게시판별로 표준 RSS 2.0 을 그대로 받을 수 있습니다.

GET /rss사이트 전체 최신글
GET /rss/{게시판}그 게시판만
사이트맵은요?

/sitemap.xml 이 열려 있고, 게시판·페이지가 많으면 /sitemap-{이름}.xml 로 나뉩니다. SEO 코어(app/Core/Seo.php)가 관리합니다.

바깥 프로그램이 쓸 수 있는 REST API 가 있나요?

아직 없습니다. 지금은 위의 RSS·사이트맵처럼 표준 피드만 열려 있고, 인증이 필요한 별도 API 서버는 두지 않았습니다.

API 가 필요하시면 아래 문의로 어떤 용도인지 알려 주세요 — 검토해서 안내드리겠습니다.

요청 처리 순서

브라우저 요청 하나가 어떤 순서로 처리되나요?

실제 파일이 아니면 전부 index.php 로 모여, 아래 순서를 거쳐 화면(또는 JSON·RSS 등)으로 나갑니다.

브라우저요청
→
index.php유일한 진입점
Router
→
Controller권한 확인
흐름 결정
→
Model / DBMariaDB 조회
→
View(스킨)테마+스킨 렌더

스킨이 없거나 테마 폴더가 없으면 View 단계에서 basic 으로 조용히 되돌아갑니다 — 화면이 하얗게 죽는 대신 기본 모습으로 나갑니다.

문의·제안

오류를 발견했거나, 필요한 기능이 있어요

아래에서 바로 남겨 주세요. 1:1 문의로 접수되어 분류가 자동으로 선택된 채 열립니다.