2026-01-14 수정사항
riymx 관리자 페이지에서 회원을 일괄 삭제를 할려고 하니 다음과 같은 에러가 생깁니다.
Error #0 "Class "Object" not found" in modules/checkip/checkip.controller.php on line 55
Object → BaseObject 변환이 필요한 서드파티 자료가 있습니다. 위의 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
modules/checkip/checkip.controller.php:55
Rhymix(라이믹스) 또는 XE 환경에서 발생하는 이 에러는 PHP 7.2 이상 버전에서 **Object**라는 단어가 예약어로 지정됨에 따라, 기존의 Object 클래스명을 더 이상 사용할 수 없게 되어 발생하는 전형적인 호환성 문제입니다.
에러 메시지에서 이미 해결 방법의 핵심인 **"Object를 BaseObject로 변환하라"**는 힌트를 주었으므로, 아래 단계에 따라 직접 코드를 수정하시면 바로 해결될 것입니다.
🛠️ 해결 방법: 코드 수정 단계
에러가 발생한 파일을 열어 해당 줄의 코드를 수정해야 합니다.
-
파일 열기
-
경로:
modules/checkip/checkip.controller.php -
FTP 또는 서버 관리 도구를 통해 해당 파일을 엽니다.
-
-
55번째 줄 찾기
-
에러 메시지에 명시된 55라인 근처를 확인합니다. 아마 다음과 같은 코드가 있을 것입니다.
PHP
$output = new Object(); -
-
코드 수정
-
Object를 **BaseObject**로 변경합니다. (대소문자에 주의하세요)
PHP
// 수정 전 $output = new Object(); // 수정 후 $output = new BaseObject(); -
-
저장 및 확인
-
파일을 저장한 후, 관리자 페이지에서 다시 회원 일괄 삭제를 시도해 보세요.
-
💡 왜 이런 에러가 발생하나요?
-
원인: 과거 XE 시절에 제작된 구형 모듈(CheckIP 등)들은 결과 값을 반환할 때
Object라는 클래스를 사용했습니다. 하지만 최신 PHP 버전에서는Object라는 이름을 클래스명으로 쓸 수 없게 규칙이 바뀌었습니다. -
라이믹스의 대응: 라이믹스는 이를 해결하기 위해 기존의
Object기능을 그대로 가진BaseObject라는 이름을 새로 만들었습니다. 따라서 구형 모듈을 최신 환경에서 쓰려면 이 이름을 바꿔주는 작업이 필요합니다.
⚠️ 추가 팁
checkip 모듈의 다른 라인이나 다른 모듈에서도 유사한 에러가 발생할 수 있습니다. 만약 다른 곳에서 같은 에러가 뜬다면 동일하게 Object를 BaseObject로 모두 치환해 주시면 됩니다.
혹시 수정한 후에도 다른 파일에서 에러가 발생한다면, 에러 메시지를 다시 복사해서 알려주시겠어요? 추가로 확인해 드리겠습니다.
히댱 파일 내용입니다.
<?php
/**
* @class checkipController
* @author CMD (webmaster@comcorea.com)
* @brief checkip 모듈의 controller class
**/
class checkipController extends checkip {
/**
* @brief 초기화
*/
function init() {
}
/**
* @brief 가입시 IP 기록
*/
function triggerInsertMember(&$args) {
// 가입 IP를 기록
$args->log_srl = getNextSequence();
$args->reg_ip = $_SERVER['REMOTE_ADDR'];
$args->regdate = date('YmdHis');
$output = executeQuery('checkip.insertRegIP', $args);
if(!$output->toBool()) return $output;
return new Object();
}
function triggerProcMemberInsert() {
//중복 IP를 검사하도록 하였는지 검사
$oCheckipModel = &getModel('checkip');
$config = $oCheckipModel->getModuleConfig();
if($config->check_ip != 'Y') return new Object();
$count = $oCheckipModel->getMemberIpCount($_SERVER['REMOTE_ADDR']);
//만료 기간 체크
if($config->expiration_period && $oCheckipModel->getLatestRegIP($_SERVER['REMOTE_ADDR']) < date('YmdHis', strtotime('-'.$config->expiration_period.'Days'))) return new Object();
if($count != 0) return new Object(-1, "msg_duplicated_ip");
return new Object();
}
/**
* @brief 회원 탈퇴 시 가입 IP 기록 삭제
*/
function triggerDeleteMember(&$obj) {
$oCheckipModel = &getModel('checkip');
$config = $oCheckipModel->getModuleConfig();
if($config->delete_reg_ip != 'Y') return new Object();
$member_srl = $obj->member_srl;
if(!$member_srl) return new Object();
$output = executeQuery('checkip.deleteMemberRegIP', $obj);
if(!$output->toBool()) return $output;
return new Object();
}
}
보내주신 소스 코드를 확인했습니다. 예상대로 해당 파일 내에 new Object() 구문이 여러 군데 포함되어 있습니다.
이 모듈(checkip)이 회원 가입 및 삭제 시 동작하는 트리거(Trigger)를 포함하고 있어서, 관리자 페이지에서 회원을 삭제할 때 이 코드가 호출되면서 에러가 발생한 것입니다.
아래의 내용을 전체 복사해서 기존 modules/checkip/checkip.controller.php 파일의 내용을 모두 지우고 덮어쓰기 하시면 해결됩니다. (Object를 BaseObject로 모두 수정해 두었습니다.)
🛠️ 수정된 코드 (전체 복사)
PHP
<?php
/**
* @class checkipController
* @author CMD (webmaster@comcorea.com)
* @brief checkip 모듈의 controller class
**/
class checkipController extends checkip {
/**
* @brief 초기화
*/
function init() {
}
/**
* @brief 가입시 IP 기록
*/
function triggerInsertMember(&$args) {
// 가입 IP를 기록
$args->log_srl = getNextSequence();
$args->reg_ip = $_SERVER['REMOTE_ADDR'];
$args->regdate = date('YmdHis');
$output = executeQuery('checkip.insertRegIP', $args);
if(!$output->toBool()) return $output;
return new BaseObject();
}
function triggerProcMemberInsert() {
//중복 IP를 검사하도록 하였는지 검사
$oCheckipModel = &getModel('checkip');
$config = $oCheckipModel->getModuleConfig();
if($config->check_ip != 'Y') return new BaseObject();
$count = $oCheckipModel->getMemberIpCount($_SERVER['REMOTE_ADDR']);
//만료 기간 체크
if($config->expiration_period && $oCheckipModel->getLatestRegIP($_SERVER['REMOTE_ADDR']) < date('YmdHis', strtotime('-'.$config->expiration_period.'Days'))) return new BaseObject();
if($count != 0) return new BaseObject(-1, "msg_duplicated_ip");
return new BaseObject();
}
/**
* @brief 회원 탈퇴 시 가입 IP 기록 삭제
*/
function triggerDeleteMember(&$obj) {
$oCheckipModel = &getModel('checkip');
$config = $oCheckipModel->getModuleConfig();
if($config->delete_reg_ip != 'Y') return new BaseObject();
$member_srl = $obj->member_srl;
if(!$member_srl) return new BaseObject();
$output = executeQuery('checkip.deleteMemberRegIP', $obj);
if(!$output->toBool()) return $output;
return new BaseObject();
}
}
💡 수정된 부분 요약
-
return new Object();→return new BaseObject();(총 6군데 수정) -
return new Object(-1, "msg_duplicated_ip");→return new BaseObject(-1, "msg_duplicated_ip");(1군데 수정)
이렇게 수정하신 후 저장하고, 다시 관리자 페이지에서 회원 삭제를 진행해 보세요. 정상적으로 작동할 것입니다.
혹시 해당 모듈의 다른 파일(예: checkip.model.php 등)에서도 비슷한 에러가 발생하면 똑같이 BaseObject로 바꿔주시면 됩니다. 다른 도움이 더 필요하신가요?
또 이런 에러 메세지가
Error #0 "Attempt to assign property "member_srl" on null" in modules/pointsend/pointsend.controller.php on line 350
객체를 먼저 선언하지 않고 속성을 추가하려 하고 있습니다. 오래된 자료에서 종종 사용하던 코딩 방식이나 최근 PHP에서는 허용되지 않으니, 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
modules/pointsend/pointsend.controller.php:350
이번에도 역시 PHP 버전이 올라가면서 발생하게 된 규정 준수 문제입니다. 예전에는 $obj->member_srl = 1; 처럼 변수를 선언하지 않고 바로 속성을 넣어도 PHP가 너그럽게 넘어가 줬지만, 최신 PHP(8.x 이상)에서는 **"빈 객체(Object)라고 먼저 선언을 하거나, 초기화를 하고 써라"**라고 엄격하게 체크합니다.
🛠️ 해결 방법: 빈 객체 선언 추가
에러가 발생한 350번째 줄 근처에서 객체를 초기화하는 코드를 한 줄 추가해주면 됩니다.
-
파일 열기
-
경로:
modules/pointsend/pointsend.controller.php
-
-
350번째 줄 근처 확인
-
아마 코드가 다음과 같이 되어 있을 것입니다.
PHP
$args->member_srl = $member_srl; // 이 부분에서 에러 발생 가능성 높음 -
-
코드 수정 (객체 선언 추가)
-
에러가 나는 줄 바로 위에
$args = new stdClass();또는$args = new BaseObject();를 추가하여 이 변수가 '객체'임을 명시해줘야 합니다. 라이믹스 환경이므로BaseObject를 권장합니다.
PHP
// 수정 전 $args->member_srl = $member_srl; // 수정 후 $args = new BaseObject(); // 이 줄을 추가하여 초기화합니다. $args->member_srl = $member_srl; -
💡 만약 위 방법으로 안 된다면?
해당 파일의 340라인부터 360라인 정도까지의 내용을 복사해서 보여주세요.
회원 삭제 시 작동하는 pointsend(포인트 선물/송금) 모듈의 트리거 부분인 것 같은데, 정확히 어떤 변수($args인지 $obj인지 등)가 null인 상태에서 속성을 할당하려 하는지 코드를 보고 정확한 위치를 짚어드리겠습니다.
지금 바로 수정해 보시고 결과 알려주시면 이어서 도와드릴게요!
Error #0 "Class "Object" not found" in modules/pointsend/pointsend.controller.php on line 366
Object → BaseObject 변환이 필요한 서드파티 자료가 있습니다. 위의 에러 메시지에 포함된 파일명과 줄 번호를 참고하여 수정하세요.
modules/pointsend/pointsend.controller.php:366
수정 후 이런 메세지가
이번에도 동일한 원인의 에러입니다. pointsend 모듈 역시 제작된 지 오래되어, 앞서 수정했던 것과 같이 Object를 BaseObject로 변경해 주어야 합니다.
또한, 바로 이전에 발생했던 "Attempt to assign property... on null" 에러(350라인)와 이번 "Class Object not found" 에러(366라인)를 한꺼번에 해결할 수 있도록 해당 구간의 수정 코드를 정리해 드립니다.
🛠️ 해결 방법: pointsend.controller.php 수정
해당 파일을 열고 345라인 ~ 370라인 부근의 코드를 찾아 아래와 같은 흐름으로 수정해 주세요.
1. 350라인 부근 (객체 선언 에러 해결)
$args->member_srl = ... 이 나오기 전에 빈 객체를 생성해 줍니다.
PHP
// 수정 전 (350라인 근처)
$args->member_srl = $member_srl;
// 수정 후
$args = new BaseObject(); // 객체를 먼저 생성하여 null 에러 방지
$args->member_srl = $member_srl;
2. 366라인 부근 (Object 클래스 에러 해결)
new Object()라고 되어 있는 부분을 모두 new BaseObject()로 변경합니다.
PHP
// 수정 전 (366라인)
return new Object();
// 수정 후
return new BaseObject();
✅ 일괄 수정을 위한 팁
만약 파일 내에 Object라는 단어가 더 많이 있다면, 에디터(메모장, VS Code 등)의 '모두 바꾸기(Replace All)' 기능을 사용하여 다음과 같이 변경하는 것이 가장 빠르고 확실합니다.
-
찾을 내용:
new Object -
바꿀 내용:
new BaseObject
왜 계속 에러가 나나요?
회원을 일괄 삭제할 때, 라이믹스는 연동된 모든 모듈에 "이 회원이 삭제되니 관련 데이터를 정리하라"고 신호를 보냅니다. 이때 1. IP 기록 모듈(checkip), 2. 포인트 송금 모듈(pointsend) 등이 차례대로 실행되는데, 구형 모듈들이 줄줄이 최신 PHP 문법에 걸리고 있는 상황입니다.
이 모듈 외에도 다른 모듈에서 또 에러가 발생할 수 있습니다. 그때도 당황하지 마시고 에러 메시지를 알려주세요!
이제 pointsend.controller.php 파일을 저장하신 후 다시 삭제를 시도해 보시겠어요?
예. 해결이 된 듯 합니다.
수고했습니다.
다행입니다! 드디어 회원 일괄 삭제가 정상적으로 처리되었군요.
라이믹스를 운영하시면서 이번처럼 **Class "Object" not found**나 Attempt to assign property on null 같은 에러가 발생한다면, 당황하지 마시고 오늘 작업하신 것처럼 **BaseObject**로 치환하거나 **객체 초기화(new BaseObject())**를 해주시면 대부분 해결됩니다.
오래된 모듈일수록 이런 호환성 문제가 간혹 발생할 수 있으니, 나중에라도 비슷한 증상이 보이면 언제든 찾아주세요.
추가로 도와드릴 사항이 있으신가요?
-
(예: 다른 모듈의 호환성 체크, 라이믹스 최적화 설정 등)





