그누보드 5.6.2x 버전에서 오류문의드립니다. 채택완료
그누보드 5.6.2x 버전
1. member_list_exel_export.php #line 455
// 최신 파일 기준 정렬 (최신 → 오래된)
usort($logFiles, fn($a, $b) => filemtime($b) - filemtime($a));
## php 7.4 이상에서만 가능한듯 같은데.. 이하버전에서도 가능할까요?
2. dbupgrade.php #line 303
// 카카오톡 프리셋 테이블
`kp_created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`kp_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
## mysql 5.6.5 이전버전이라..
DATETIME 컬럼에 CURRENT_TIMESTAMP 지정 않되는것 같네요..
답변 3개
좋은 질문이에요 ? 상황을 정리해드릴게요.
1. member_list_exel_export.php
usort($logFiles, fn($a, $b) => filemtime($b) - filemtime($a));
-
fn(...) => ...구문은 PHP 7.4에서 추가된 화살표 함수(Arrow Function) 문법입니다. -
PHP 7.3 이하에서는 이 문법이 지원되지 않으므로 호환성 문제가 생깁니다.
해결 방법 (구버전 호환)
usort($logFiles, function($a, $b) {
return filemtime($b) - filemtime($a);
});
? 이렇게 익명 함수(function)로 바꾸면 PHP 5.3 이상~7.x 전부 호환됩니다.
(그누보드 5.6.2x는 보통 PHP 5.4~8.x까지 쓰일 수 있어서 이 방식이 안전합니다.)
2. dbupgrade.php
`kp_created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`kp_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
MySQL 5.6.5 이상에서만
DATETIME컬럼에DEFAULT CURRENT_TIMESTAMP와ON UPDATE CURRENT_TIMESTAMP지원합니다. -
5.6.4 이하에서는
DATETIME은 정적인 DEFAULT 값(예:'0000-00-00 00:00:00'또는'1970-01-01 00:00:00')만 가능합니다.
해결 방법 (MySQL 5.6.5 미만 호환)
방법 A. TIMESTAMP 타입 사용
`kp_created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`kp_updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
TIMESTAMP는 MySQL 5.0대부터CURRENT_TIMESTAMP지정 가능. -
단,
TIMESTAMP는 기본적으로 UTC 변환이 걸리기 때문에, 애플리케이션 타임존 관리에 주의해야 합니다.
방법 B. DATETIME 그대로 쓰고 PHP에서 갱신
`kp_created_at` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`kp_updated_at` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
그리고 INSERT/UPDATE 시 PHP 코드에서:
$now = date("Y-m-d H:i:s");
$sql = "INSERT INTO kakao_preset (kp_created_at, kp_updated_at, ...)
VALUES ('$now', '$now', ...)";
UPDATE 시:
$sql = "UPDATE kakao_preset
SET kp_updated_at = '".date("Y-m-d H:i:s")."', ...
WHERE id = ...";
? 이 방식이 가장 범용적이고, MySQL 5.1~8.0까지 전부 안전하게 동작합니다.
✅ 정리:
-
PHP 화살표 함수 → 구버전 호환 위해
function($a,$b){...}로 변경하세요. -
MySQL DATETIME + CURRENT_TIMESTAMP →
-
5.6.5 이상이면 그대로 사용 가능
-
이하 버전이면
TIMESTAMP로 바꾸거나,DATETIME+ PHP 코드에서 관리
-
댓글을 작성하려면 로그인이 필요합니다.
timestamp 변경시 2개의 CURRENT_TIMESTAMP 사용오류라..
## member_list_exel_export.php #line 303
`kp_created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`kp_updated_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
이렇게 변경했네요..
그리고 하단 insert 부분은..
// 기본 프리셋 데이터 추가
sql_query("INSERT INTO `{$g5['kakao5_preset_table']}`
(`kp_type`, `kp_category`, `kp_preset_code`, `kp_preset_name`, `kp_template_name`, `kp_alt_send`, `kp_active`, `kp_created_at`, `kp_updated_at`)
VALUES
('회원', '회원', 'CU-MB01', '회원가입완료', '', 1, 0, '$now', '$now'),
('최고관리자', '회원', 'AD-MB01', '회원가입완료', '', 1, 0, '$now', '$now'),
('작성자', '게시판', 'CU-BO01', '새 게시글 작성', '', 1, 0, '$now', '$now'),
('최고관리자', '게시판', 'AD-BO01', '새 게시글 작성', '', 1, 0, '$now', '$now'),
('그룹관리자', '게시판', 'AD-BO02', '새 게시글 작성', '', 1, 0, '$now', '$now'),
('게시판관리자', '게시판', 'AD-BO03', '새 게시글 작성', '', 1, 0, '$now', '$now'),
('작성자', '게시판', 'CU-BO02', '새 댓글 작성', '', 1, 0, '$now', '$now'),
('댓글 작성자', '게시판', 'CU-BO03', '새 댓글 작성', '', 1, 0, '$now', '$now'),
('답변글 작성자', '게시판', 'CU-BO04', '답변글 작성', '', 1, 0, '$now', '$now'),
('최고관리자', '투표', 'AD-VO01', '기타의견 작성', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR01', '주문 완료', '', 1, 0, '$now', '$now'),
('최고관리자', '쇼핑몰', 'AD-OR01', '주문 완료', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR02', '무통장입금 주문 완료', '', 1, 0, '$now', '$now'),
('최고관리자', '쇼핑몰', 'AD-OR02', '무통장입금 주문 완료', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR03', '무통장입금 완료', '', 1, 0, '$now', '$now'),
('최고관리자', '쇼핑몰', 'AD-OR03', '무통장입금 완료', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR04', '(주문자)주문 취소', '', 1, 0, '$now', '$now'),
('최고관리자', '쇼핑몰', 'AD-OR04', '(주문자)주문 취소', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR05', '(관리자)주문 취소', '', 1, 0, '$now', '$now'),
('최고관리자', '쇼핑몰', 'AD-OR05', '(관리자)주문 취소', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR06', '반품', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-OR07', '품절', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-DE01', '배송 준비', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-DE02', '배송중', '', 1, 0, '$now', '$now'),
('주문자', '쇼핑몰', 'CU-DE03', '배송 완료', '', 1, 0, '$now', '$now'),
('요청자', '쇼핑몰', 'CU-ST01', '재입고알림', '', 1, 0, '$now', '$now'),
('문의자', '1:1문의', 'CU-IQ01', '문의 등록', '', 1, 0, '$now', '$now'),
('최고관리자', '1:1문의', 'AD-IQ01', '문의 등록', '', 1, 0, '$now', '$now'),
('문의자', '1:1문의', 'CU-IQ02', '답변 등록', '', 1, 0, '$now', '$now');
", true);
$is_check = true;
}
이렇게 변경하니 DB업그레이드 작동하네요..
## member_list_exel_export.php 는
data: {"status":"error","message":"잘못된 요청 입니다.","downloadType":1,"total":1,"current":1,"totalChunks":1,"currentChunk":1,"files":[],"zipFile":"","filePath":"https:\/\/www.abc.com\/data\/member_list\/20250917170609"}
이런에러만 나오네요..
댓글을 작성하려면 로그인이 필요합니다.
1. 다음과 같이 수정
</p>
<p>// PHP 7.4 이하 호환 버전
usort($logFiles, function($a, $b) {
return filemtime($b) - filemtime($a);
});</p>
<p>
2. 다음과 같이 수정
</p>
<p>`kp_created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`kp_updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인