개발 Q&A

제목 라우터 오류
카테고리 PHP
글쓴이 포말 작성시각 2024/10/28 17:56:00
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 9045   RSS

종종 아래 문구가 올라오던데 어떤 초지를 해야할까요?

PHP Fatal error:  Class 'MY_Router' not found in /data/wwwroot/system/core/Common.php on line 196, referer:  

$_classes[$class] = isset($param)

? new $name($param)

: new $name();  <==잡히는 부분

return $_classes[$class];

 다음글 ci4 (4.6) 설치했는데 동작을 안합니다. (2)
 이전글 CI 3.0 컨트롤러 메소드 이름 끝에 'txt' 라는... (2)

댓글

변종원(웅파) / 2024/10/28 18:36:40 / 추천 0
어떤 주소일때 그 현상이 나오는지 확인해보면 답 나올 겁니다
프레드윤 / 2024/11/01 17:26:53 / 추천 0
제가 추측 했을때는 ci3에서 php 버전 8.2~ 최선으로 했을때 나오는 에러 같은데 맞나요?
포말 / 2024/11/12 10:29:44 / 추천 0
php 버전은 5.6.3입니다
tuyitu719 new / 2026/03/14 09:39:17 / 추천 0

해당 오류는 보통 CodeIgniter에서 사용자 정의 Router 클래스(MY_Router)를 불러오지 못할 때 발생합니다.
즉, Common.php의 문제가 아니라, 실제로는 MY_Router 클래스 파일이 없거나, 파일명/클래스명/경로가 맞지 않는 경우가 많습니다.

확인해야 할 항목은 아래와 같습니다.

  1. application/core/MY_Router.php 파일이 실제로 존재하는지 확인

  2. 파일 안의 클래스명이 정확히 class MY_Router extends CI_Router 로 선언되어 있는지 확인

  3. 서버가 Linux라면 파일명 대소문자가 정확히 맞는지 확인

  4. application/config/config.php 에서 subclass_prefix 값이 MY_ 로 되어 있는지 확인

  5. 배포 또는 업데이트 과정에서 해당 파일이 누락되지 않았는지 확인

  6. 캐시(opcache) 문제일 수 있으니 PHP-FPM/웹서버 재시작도 함께 진행

즉, 현재 잡히는 부분인:


 
 
$_classes[$class] = isset($param)
? new $name($param)
: new $name();
 

여기는 단순히 클래스를 생성하는 구간일 뿐이고,
실제 원인은 $name 에 해당하는 MY_Router 클래스를 찾지 못하는 것입니다.

관련 서비스 및 참고 사이트:
https://www.ee-supply.com/