그누보드4 윈도우 서버 환경 PHP mktime 날짜 오류 해결 방법
페이지 정보

본문
그누보드4 윈도우 서버 환경 PHP mktime 날짜 오류 해결 방법
그누보드4를 윈도우 서버 환경에서 운영할 때 생년월일 입력 등 1970년 이전 날짜 처리 시 발생하는 오류의 원인과 사용자 정의 함수를 통한 해결 절차를 확인합니다.
윈도우 서버 환경 그누보드4 mktime 날짜 오류 원인
윈도우 서버 환경의 APM을 사용하는 그누보드4에서 회원가입 시 생년월일 달력에서 1970년 이전 날짜를 선택하면 경고 메시지가 발생하며 정상적인 날짜 처리가 되지 않는 현상이 발생합니다.
이는 윈도우 서버 환경의 PHP가 mktime 함수를 사용할 때 1970년 이전 날짜를 음수 값으로 처리하지 못하는 제한 사항 때문입니다.
윈도우 서버 환경 PHP mktime 날짜 오류 해결을 위한 코드 수정 방법
윈도우 서버 환경의 APM을 사용하는 그누보드4에서 회원가입 시 생년월일 달력에서 1970년 이전 날짜를 선택하면 윈도우 서버 PHP의 mktime 함수 제한으로 인해 음수 값을 처리하지 못해 경고 메시지가 발생합니다. 이를 해결하려면 bbs/calendar.php 파일에 사용자 정의 함수를 추가하고 기존 코드를 수정해야 합니다.
작업 전 백업
작업을 시작하기 전 반드시 bbs/calendar.php 파일을 백업하십시오.
수정 절차
bbs/calendar.php파일을 엽니다.- 기존
$mktime = mktime(0,0,0,$mm,1,$yyyy);코드 상단에 아래의mk_time함수를 추가합니다.
function mk_time($m,$d,$y){
if($y<1970){
$mk_time=mktime(9,0,0,1,1,1970);
$i=1969;
if(checkdate($m,$d,$y)){
do{
for($j=12;$j>=1;$j--){
if($m==$j && $y==$i){
for($k=31;$k>=$d;$k--){
if(checkdate($j,$k,$i)) {
$time++;
}
}
break;
} else {
for($z=31;$z>=1;$z--){
if(checkdate($j,$z,$i)) {
$time++;
}
}
}
}
$i--;
}while($i>=$y);
return $mk_time-(($time)*24*3600);
} else {
return $mk_time;
}
} elseif($y>2038){
$mk_time=mktime(9,0,0,1,1,2038);
$i=2039;
if(checkdate($m,$d,$y)){
do{
for($j=12;$j>=1;$j--){
if($m==$j && $y==$i){
for($k=31;$k>=$d;$k--){
if(checkdate($j,$k,$i)) {
$time++;
}
}
break;
} else {
for($z=31;$z>=1;$z--){
if(checkdate($j,$z,$i)) {
$time++;
}
}
}
}
$i++;
}while($i>=$y);
return $mk_time-(($time)*24*3600);
} else {
return $mk_time;
}
} else {
return mktime(0,0,0,$m,$d,$y);
}
}
- 기존 코드를
$mktime = mk_time($mm,1,$yyyy);로 수정합니다.
적용 확인 및 복구 방법
수정 후 회원가입 페이지의 생년월일 달력에서 1970년 이전 날짜를 다시 선택하여 경고 메시지 없이 정상적으로 입력되는지 확인합니다. 문제가 발생할 경우, 미리 백업해둔 bbs/calendar.php 파일을 다시 업로드하여 원상 복구합니다.
참고자료
기타 참고자료
- 이전글그누보드 관리자 메뉴 회원 레벨별 권한 제어 기능 구현 방법 26.09.17
- 다음글그누보드4 MySQL 데이터베이스 문자셋 인코딩 설정 및 한글 깨짐 해결 26.09.16
댓글목록
등록된 댓글이 없습니다.