ComusThumbz 문제 해결
- 제품정보
- 빠른 진단 checklist
- 서버 및 PHP 오류
- 빈 페이지 / 500 내부 서버 오류
- AdminLanguage 싱글턴 오류
- 기억 한계 배출하는
- 최대 실행 시간 초과
- 파일 권한 오류
- Database 문제
- Database 연결 실패
- 테이블 잠금 및 블록 쿼리
- 느린 쿼리
- SQL 디버깅 명령
- 영상 처리
- 동영상 Stuck 에 'pending'
- FFmpeg / FFprobe 찾을 수 없습니다
- 비디오 처리 오류
- HLS 스트리밍 작동하지 않음
- Thumbnails 생성하지 않는
- CDN 업로드 실패
- 분산 변환 서버 문제
- API 문제
- API 인증 실패
- JavaScript licenses API 웹 사이트
- API는 빈 데이터를 반환
- CORS 오류
- Frontend 문제
- 특징 전시/모든 Disabled
- 번역 로딩
- CSS 스타일 적용되지 않음
- 어두운 형태 작동하지 않음
- Video Player 로딩되지 않음
- 추적하지 않음
- SEO 메타 태그 Missing
- 캠 출연 시스템
- 공연안내
- 모든 공연 보기 Offline
- 외부 API 403 금지
- 외부 API 401 허가
- 느린 캠 Performers 페이지
- 제휴 수익 Missing
- 라이브 스트리밍 (LiveKit)
- LiveKit Server 시작하기
- Stream 연결
- 높은 지연 / 버퍼링
- 채팅하기
- 제작자 Monetization
- 팁 처리
- 집회하지 않음
- Creator 게시물 표시되지 않음
- 구독 문제
- 인증 및 사용자
- 로그인 실패
- 세션 문제
- 2FA 문제
- Cron 작업
- Cron Jobs 를 실행
- 필수 Cron 일정
- Debug Tools 참조
- 로그 파일 위치
- 일반적인 SQL 수정
제품정보
이 가이드는 전체 ComusThumbz CMS에 대한 문제 해결 정보를 통합하여 백엔드 관리자 패널을 덮습니다 (ct/admin/) 그리고 frontend 공개 페이지 (프로젝트 루트). 증상, 원인, 해결책으로 범주에 의해 구성 됩니다.
빠른 진단 checklist
문제 발생시 이러한 검사를 통해 실행:
- PHP 오류 로그 - 체크인
ct/logs/그리고 최근 오류에 대한 서버의 PHP 오류 로그 - Cron 작업 - Cron 작업이 실행됩니다 (대부분 "data not updating"문제)
- 파일 권한 - 웹 서버는 읽기/쓰기 접근을 해야 합니다.
uploads/·ct/logs/·ct/dat/ - Database 연결 - 시험
https://yourdomain.com/tools/simpletest.php?key=comus2025 - API 건강 - 시험
https://yourdomain.com/ct/api/v1/features - 특징 toggles - Disabled 기능은 "페이지를 표시하지 않는 가장 일반적인 원인입니다"
- 브라우저 콘솔 - JavaScript 오류 확인 (F12 -> 콘솔)
- 네트워크 탭 - 실패한 API 요청에 대한 확인 (F12 -> Network)
서버 및 PHP 오류
빈 페이지 / 500 내부 서버 오류
증상: 페이지는 완전 빈을 표시하거나 HTTP를 반환 500 가시 오류가 없습니다.
일반적인 원인:
declare(stricttypes=1)관련 기사 - FIRST 라인이 있어야 합니다.. 어떤 whitespace, BOM 특성, 또는 그것의 앞에 부호는 뚱뚱한 과실을 일으키는 원인이 됩니다.
- PHP 구문 오류 - 오류 로그 확인:
- Missing은 파일 포함 - 아
requireonce존재하지 않는 파일:
- 표시 오류 비활성화 - 디버깅을 위해 Temporarily:
해결책: PHP 오류 로그를 먼저 확인하십시오. 자주 묻는 질문 displayerrors 실제 오류를 볼 때 일시적으로.
AdminLanguage 싱글턴 오류
증상:
Fatal error: Cannot instantiate AdminLanguage 또는 admin 페이지에 유사한 500 오류.
원인: 사용 방법 new AdminLanguage() 싱글톤 패턴 대신.
수정 :
// CORRECT
$lang = AdminLanguage::getInstance();
기억 한계 배출하는
증상:
Fatal error: Allowed memory size of X bytes exhausted일반적인 방아쇠:
- 큰 비디오 파일 업로드
- 대형 이미지 갤러리
- 400K+ 캠 출연자 기록에 대량 작업
해결책: PHP 메모리 제한을 증가:
또는 per-script:
최대 실행 시간 초과
증상:
Fatal error: Maximum execution time of 30 seconds exceeded일반적인 방아쇠:
- 비디오 처리 cron 작업
- 큰 데이터베이스 쿼리
- 외부 API 호출 타이밍 아웃
해결책:
cron 작업을 위해, 무제한 설정:
파일 권한 오류
증상:
Permission denied 파일을 작성하거나 감독을 만들 때 오류.
필수 권한:
수정 :Database 문제
Database 연결 실패
증상: 페이지는로드 실패, API는 500 오류를 반환, "연결 거부" 로그.
진단:
- 빠른 데이터베이스 도구로 테스트 :
- 자격 증명
ct/dat/config.inc.php::
- MySQL을 실행합니다.
해결책: MySQL 서비스를 실행하고 자격 증명은 데이터베이스 구성과 일치합니다.
테이블 잠금 및 블록 쿼리
증상: API 호출 timeout 하지만 직접 데이터베이스 쿼리는 빠른. 30-60 초 동안 걸린다.
진단:
- MySQL 상태 도구를 실행:
- 차단 쿼리에 대한 확인:
- InnoDB 잠금 분석을위한 데이터베이스 잠금 검사기 :
해결책:
- 차단을 해제:
- 또는 디버그 도구를 통해:
일반적인 culprit: 더 보기 apicron.php marksiteperformersoffline() 한 번에 모든 공연을 업데이트하는 기능. 이 배치 된 업데이트로 고정되었습니다 (10ms 일시 정지).
느린 쿼리
증상: 특정한 페이지는 천천히, 특히 캠 performers 또는 영상 명부를 적재합니다.
진단:
-- Analyze 테이블 성능
ANALYZE 테이블 tblCamsPerformers;
ANALYZE 테이블 tblVideos;
-- Check index usage
SHOW INDEX FROM tblCamsPerformers;
SHOW INDEX FROM tblVideos;
해결책:
- Verify 인덱스는 자주 정해진 열에 존재합니다.
- 제품 정보
EXPLAIN잘못된 인덱스를 식별하는 느린 쿼리 - APCu 캐시가 작동되는 경우 확인하기 (
php -m | grep apcu· - 캠 performers에 대 한, 사용
?fast=1COUNT 쿼리 건너뛰기
SQL 디버깅 명령
수동 데이타베이스 디버깅을 위한 빠른 참고:
-- 특정 쿼리를 죽이기
킬 123;
-- 30 초 이상 모든 수면 연결 죽이기
SELECT CONCAT('KILL', id, ';')
자주 묻는 질문스키마
WHERE Command='Sleep' 과 시간 > 30;
-- 테이블 자물쇠를 검사하십시오
SHOW 오픈 테이블 WHERE사용 > 0;
-- Check InnoDB status for deadlocks
SHOW ENGINE INNODB STATUS;
영상 처리
동영상 Stuck 에 'pending'
증상: 동영상 업로드하지만 결코 처리. 상태는 'pending'이 무한하게 남아 있습니다.
이것은 가장 일반적인 비디오 문제입니다. 이 주문 확인:
- Cron 작업이 실행되지 않음 - 비디오 프로세서는 일정에 실행:
- php /path/to/ct/admin/cron/ftp에비디오다운로드
- 잘못된 파일path 형식의 데이터베이스 - 가장 일반적인 데이터 버그 :
파일 경로 MUST: uploads/videos/original/{filename}
이름 * 파일명과 이름 * 기타 제품 ct/ 연락처
- incorrect 파일 경로 수정:
- 명확한 붙어 있던 가공 큐:
- 파일이 디스크에 존재합니다.
FFmpeg / FFprobe 찾을 수 없습니다
증상: 비디오 처리는 "FFmpeg not found"또는 "FFprobe not found"로 실패합니다.
진단:
해결책:
- FFmpeg 설치:
- config match 실제 위치의 경로 확인:
- PHP는 포탄 명령을 실행할 수 있습니다:
비디오 처리 오류
증상: 동영상 처리 시도 후 'error' 상태 변경.
진단:
- 처리 로그 확인:
- 비디오 녹화 확인:
일반적인 원인:
- Corrupted 소스 파일
- 지원되는 codec
- 충분한 디스크 공간
- FFmpeg 버전 너무 오래 (need 4.0+)
해결책: 손상된 원인을 수정한 다음 재처리에 대한 비디오를 재설정:
HLS 스트리밍 작동하지 않음
증상: 비디오 플레이어는 오류 또는 MP4로 돌아갑니다. 사이트맵
.m3u8 파일이 로딩되지 않습니다.
진단:
- HLS 파일이 생성된 경우 확인:
- 마스터 재생 목록을 확인:
- Check MIME type configuration. Your web server must serve
.m3u8asapplication/vnd.apple.mpegurl:
Solution: Verify HLS files exist on CDN, MIME types are correct, and securemedia.php token is valid.
Thumbnails Not Generating
Symptom: Videos process but have no poster image, preview, or timeline thumbnails.
Diagnosis:
Common causes:
- ImageMagick not installed (
convertcommand needed for contact sheets) - FFmpeg failed during thumbnail extraction
- CDN upload for thumbnails failed (check storage server logs)
Solution:
Reprocess thumbnails only
CDN Upload Failures
Symptom: Video processes locally but files don't appear on CDN storage server.
Diagnosis:
- Check storage server configuration:
- Check file location records:
- Verify CDN credentials and connectivity from the admin panel.
File sharding formula: floor(videoid / 1000) 1000
Example: Video ID 4321 goes to shard 4000:
Solution: Check CDN credentials, test connectivity, verify storage server group assignment.
Distributed Conversion Server Issues
Symptom: Videos not being assigned to remote conversion servers, or remote processing fails.
Diagnosis:
- Check server status:
- Check conversion logs:
- Verify settings:
Solution:
- Ensure
conversionuseremoteserversis set to1 - Verify remote server SSH/FTP connectivity
- Check that FFmpeg is installed on remote servers
- Verify
conversionfallbacktolocalis1for automatic fallback
API Issues
API Authentication Failures
Symptom: API returns 401 Unauthorized or "Invalid token" errors.
Common causes:
- Wrong user ID column -
tblCMSUsersusesid, NOTuserid:
-- WRONG (column doesn't exist)
SELECT userid FROM tblCMSUsers;
- Wrong status column -
tblCMSUsersusesaccountstatus, NOTstatus:
-- WRONG
WHERE status = 'active'
- JWT token expired - Tokens have an expiration time. Re-authenticate:
- JWT secret mismatch - Verify in config:
API Calls Failing from JavaScript
Symptom: Frontend pages can't load data. Browser console shows fetch errors.
Diagnosis:
- Check
ApiClientbase URL:
- Check Network tab (F12) for the failing request - note the URL, status code, and response body.
- Verify the endpoint exists in the router:
- File:
ct/api/v1/index.php - 90+ endpoints defined
- Check JWT token:
Solution: Verify base URL detection, check endpoint exists in router, verify authentication token if endpoint requires auth.
API Returns Empty Data
Symptom: API returns
{"success": true, "data": []} with no content.
Diagnosis:
- Check if data exists in the database:
- Check feature toggles - some API endpoints return empty when features are disabled.
- Check query parameters - pagination offset may be beyond available data.
Solution: Verify data exists in the database and feature toggles are enabled.
CORS Errors
Symptom: Browser console shows
Access-Control-Allow-Origin errors.
Cause: API and frontend on different domains or ports.
Solution: Ensure the API sets proper CORS headers:
Or in .htaccess:
Frontend Issues
Features Not Showing / All Disabled
Symptom: Pages redirect with "feature disabled" message, or navigation items are missing.
Diagnosis:
- Test the features API endpoint:
- Check feature cache - APCu may have stale data:
- Check
featurehelper.php- all features default to enabled if not found in database.
- Verify feature settings in admin panel: Admin Panel -> Feature Toggles
Solution: Clear APCu cache, verify feature settings in admin panel, check that the API is reachable.
Translations Not Loading
Symptom: Translation keys displayed instead of text (e.g.,
videos.title instead of "Videos").
Diagnosis:
- Verify
lang/en.jsonexists and is valid JSON:
- Check file permissions (must be readable by web server).
- Verify the translation key exists in the JSON:
- Check for typos in nested keys -
videos.sortby.videoidrequires all parent keys to exist.
Solution: Validate JSON syntax, check file permissions, verify key path exists in the translation file.
CSS Styles Not Applying
Symptom: Page looks unstyled or broken layout.
Rules:
- Only use
assets/css/style.css- no external CSS frameworks (Bootstrap, Tailwind, etc.) - Check for specificity conflicts with Style Manager overrides (Phase 12)
- Verify the stylesheet is loaded in
includes/header.php - Check browser cache - append
?v=timestampto stylesheet URL
Solution:
Dark Mode Not Working
Symptom: Dark mode toggle doesn't change the page appearance.
Diagnosis:
- Check
featuredarkmodeis enabled in feature toggles - Verify
localStorageis available:
- Confirm
body.dark-modeCSS rules exist inassets/css/style.css - Check that both
bodyandhtmlelements get the class:
Solution: Enable the feature toggle, clear localStorage, verify CSS dark mode rules exist.
Video Player Not Loading
Symptom: Video player area is blank, shows error, or spinner never completes.
Diagnosis:
Check browser Network tab for/ct/api/v1/videos/{id} requestVerify video data is returned with valid URLsCheck access control - user may lack permission (free/premium/VIP)For HLS: verify HLS.js is loaded and browser supports it
- Check
securemedia.phptoken generation:
Solution: Check API response, verify access control, ensure HLS.js or native HLS support is available, verify media token is valid.
Click Tracking Not Working
Symptom: External links not being tracked, or affiliate revenue is missing.
Critical rule: ALL external links MUST route through click.php. Direct links incur a 100% skim penalty.
Correct format:
// JavaScript
const url = click.php?url=${encodeURIComponent(externalUrl)}&type=${type}&id=${id};
Diagnosis:
- Check that
click.phpexists at the project root - Verify
tblClickTrackingis receiving records:
- Check
tblContentClicksfor aggregated counts
Solution: Audit all external links to ensure they use click.php. Use browser DevTools to verify link href attributes.
SEO Meta Tags Missing
Symptom: Social media shares show generic or missing preview data. Search engines don't index properly.
Cause: SEO data must be loaded BEFORE header.php is included.
Correct order:
// 2. Fetch data for SEO
$api = InternalApiHelper::getInstance();
$videoData = $api->getVideoForSeo($videoId);
// 3. NOW include header (generates meta tags from loaded data)
requireonce DIR . '/includes/header.php';
Diagnosis:
View page source and check for<meta property="og:title"> tagsUse Facebook/Twitter debugger tools to validate Open Graph tags
- Check
ct/dat/seosettings.jsonfor template configuration
Solution: Ensure SEO data is loaded before header, verify SeoHelper.php and InternalApiHelper.php are working.
Cam Performers System
No Performers Appearing
Symptom: Cam performers page is empty, no performer cards shown.
Diagnosis (in order):
- Check cron jobs are running:
- Verify API credentials in Admin -> Cam Settings
- Check
tblCamsSitesfor enabled sites:
- Verify
featurelivecamsis enabled in feature toggles - Check logs:
- Test the internal API directly:
Solution: Enable cron jobs, verify API credentials, enable the feature toggle.
All Performers Showing Offline
Symptom: Performers exist but all show as offline.
Diagnosis:
- Run the cron update manually:
- Check if external API is responding:
- Verify API token hasn't expired
- Check database for online performers:
Solution: Run cron manually, verify external API credentials are valid.
External API 403 Forbidden
Symptom: External CrakRevenue API returns
{"message": "Forbidden"} or HTML error page.
Causes:
- Missing or invalid
x-api-keyheader - Missing
User-Agentheader (returns HTML error page) - API key revoked by CrakRevenue
Diagnosis:
Solution: Verify x-api-key (stored in tblCamsSites.apiData) and ensure requests include a User-Agent header. Contact CrakRevenue if key was revoked.
External API 401 Unauthorized
Symptom: External API returns
{"message": "Unauthorized: brands not allowed"} or similar.
Causes:
- Invalid or missing
tokenparameter - Requesting brands not authorized for your token
- Token is domain-bound and being used from wrong domain
Diagnosis:
Solution: Verify token (stored in tblCamsSites.parameters), ensure you only request authorized brands, verify token is for your domain.
Slow Cam Performers Page
Symptom: Cam performers page takes 5+ seconds to load.
Diagnosis:
- Use the debug panel: add
?debug=1to the URL to see timing breakdown - Use the full debug tool:
Optimization checklist:
- Enable fast mode - ensure frontend uses
?fast=1parameter - Check APCu is installed and enabled:
- Verify stats cache cron is running:
- Reduce
perpageto 24 or less - Check for blocking database queries (see Table Locks)
Three-layer caching strategy:
- Layer 1: APCu in-memory cache (30s TTL)
- Layer 2: Database stats cache (
tblCamsPerformersStatsCache) - Layer 3: Fast mode (skip COUNT queries entirely)
Solution: Enable all three caching layers and verify cron jobs are running.
Affiliate Revenue Missing
Symptom: Clicks on cam performers not tracking, affiliate commissions not appearing.
Cause: External performer links not routed through click.php.
Required format:
Also verify:
- Affiliate ID is present in the
roomUrlfrom the external API tblClickTrackingis recording cam performer clicks- Performer
chatroomurlcontains valid affiliate tracking parameters
Solution: Audit all performer links to ensure click.php routing. Verify affiliate ID in room URLs.
Live Streaming (LiveKit)
LiveKit Server Not Starting
Symptom: Docker container won't start or crashes immediately.
Diagnosis:
Check logs
Verify Docker is running
Common causes:
- Port conflicts (7880, 7881, 40000-40100 already in use)
- Invalid
livekit-config.yamlsyntax - Docker not installed or not running
- Insufficient permissions
Solution:
Restart container
Or recreate
Stream Not Connecting
Symptom: Creator clicks "Start Streaming" but video never appears. Viewers see loading spinner.
Diagnosis:
- Check LiveKit config in
ct/dat/config.inc.php:
- Verify WebSocket connection from browser:
- Open browser console (F12)
- Look for WebSocket connection errors
- Check if
wss://URL is accessible
- Verify firewall rules:
Required ports:
7880- WebSocket signaling7881- TCP media40000-40100- UDP media (WebRTC)
Solution: Verify LiveKit credentials match between config and server, check firewall ports, ensure SSL is configured for wss://.
High Latency / Buffering
Symptom: Live stream has noticeable delay (>2 seconds) or frequent buffering.
Causes:
- UDP ports blocked - WebRTC falls back to TCP (higher latency)
- Server overloaded
- Client bandwidth insufficient
Solution:
- Ensure UDP ports 40000-40100 are open
- Check server load:
- Verify
nodeipinlivekit-config.yamlmatches your public IP
Chat Not Working
Symptom: Chat messages not sending or not appearing for other viewers.
Diagnosis:
- Check
tblLiveStreamChatfor recent messages:
- Verify WebSocket connection in browser console
- Check that the stream ID is valid in
tblLiveStreams
Solution: Verify stream exists, WebSocket is connected, and chat API endpoint is responding.
Creator Monetization
Tips Not Processing
Symptom: Tips sent but not appearing in creator's balance or transaction history.
Diagnosis:
-- Check creator tips
SELECT FROM tblCreatorTips ORDER BY createdat DESC LIMIT 10;
-- Check user token balance
SELECT id, username, tokenbalance FROM tblCMSUsers WHERE id = <USERID>;
Common causes:
- Insufficient token balance
- Creator profile not verified
- API endpoint error (check response)
Solution: Verify sender has sufficient tokens, creator profile is active, and POST /tips/send returns success.
Earnings Not Aggregating
Symptom: Creator earnings dashboard shows $0 despite receiving tips/subscriptions.
Cause: Earnings aggregation cron job not running.
Required cron:
Diagnosis:
-- Check if raw transactions exist
SELECT SUM(amount) as total
FROM tblTokenTransactions
WHERE recipientid = <ID> AND createdat >= CURDATE();
Solution: Ensure the aggregatecreatorearnings.php cron job is running every minute.
Creator Posts Not Displaying
Symptom: Creator wall is empty or posts aren't visible.
Diagnosis:
- Check
featurecreatorpostsis enabled - Verify posts exist:
- Check post visibility settings (public vs subscriber-only vs PPV)
- Verify media uploads if post contains images/video:
Solution: Enable the feature toggle, verify posts exist in the database, check access control for post visibility.
Subscription Issues
Symptom: Subscriptions not activating, or subscribers can't access content.
Diagnosis:
-- Check subscription packages
SELECT FROM tblCreatorSubscriptionPackages WHERE creatorid = <CREATORID>;
Solution: Verify featuresubscriptions is enabled, check payment processing, verify subscription record status.
Authentication & Users
Login Fails
Symptom: Login form returns error or redirects back without logging in.
Diagnosis:
- Test the auth API directly:
- Check user account status:
Remember: column is accountstatus, NOT status.
- Check if account is locked, suspended, or unverified.
Solution: Verify account exists, is active (accountstatus = 'active'), and email is verified if required.
Session Issues
Symptom: User logged in via API but pages don't recognize session. Constant redirects to login.
Diagnosis:
- Check
auth/setsession.phpis being called after login - Verify session cookie is being set:
- Check PHP session configuration:
Solution: Ensure setsession.php is called after API login returns JWT token. Verify session cookie domain matches.
2FA Problems
Symptom: Two-factor authentication code rejected, or 2FA setup fails.
Diagnosis:
- Check
feature2fais enabled - Verify server time is accurate (TOTP codes are time-based):
- Time drift of >30 seconds will cause code rejection.
Solution: Sync server time with NTP, verify 2FA secret is stored correctly.
Cron Jobs
Verifying Cron Jobs Are Running
Check if cron jobs are configured:
Check if they've run recently:
Check last modification of log files
Test a cron job manually:
Required Cron Schedule
The following cron jobs must be running for full system operation:
- php /path/to/ct/admin/cron/ftpvideoprocessor.php
Cam Performers
Creator Monetization
- php /path/to/ct/admin/cron/aggregatecreatorearnings.php
Site Maintenance
Impact of missing cron jobs:
Debug Tools Reference
All debug tools require the security key parameter:
?key=comus2025
Kill a blocking query via URL:
Cam performers debug panel:
Shows: API URL, TTFB, download time, JSON parse time, DOM render time.
Log File Locations
Common SQL Fixes
Frequently-used SQL commands for fixing common data issues:
-- Reset errored videos for reprocessing
UPDATE tblVideos SET status = 'pending', errormessage = NULL
WHERE status = 'error' AND videoid IN (1, 2, 3);
-- Clear stuck processing jobs
DELETE FROM tblVideoProcessingJobs
WHERE videoid IN (SELECT videoid FROM tblVideos WHERE status = 'pending');
-- Check cam performer online counts by site
SELECT s.name, COUNT(p.performerid) as onlinecount
FROM tblCamsPerformers p
JOIN tblCamsSites s ON p.site = s.recordnum
WHERE p.status = 1 AND p.enabled = 1
GROUP BY s.name;
-- Check feature toggle status
SELECT settingkey, settingvalue
FROM tblSettings
WHERE settingkey LIKE 'feature%'
ORDER BY settingkey;
-- Check recent click tracking
SELECT type, COUNT() as clicks, MAX(createdat) as lastclick
FROM tblClickTracking
GROUP BY type ORDER BY clicks DESC;
-- Find users with authentication issues
SELECT id, username, accountstatus, emailverified, lastlogin
FROM tblCMSUsers
WHERE accountstatus != 'active'
ORDER BY id DESC LIMIT 20;
-- Check storage server health
SELECT serverid, servername, servertype, enabled,
lastcheck, lasterror
FROM tblStorageServers;
-- Verify creator earnings aggregation
SELECT creatorid, earningdate, totaltips, totalsubscriptions,
totalppv, totalearnings
FROM tblCreatorEarningsDaily
ORDER BY earningdate DESC LIMIT 20;