[php] PHP에서 시간이 안맞을때 (timezone 설정)
php로 date함수를 사용할때 다음과 같은 오류상황이 발생할 수 있다.
- 현지시간(서울)이 나오지 않을 경우
- 다음과 같은 메시지가 출력될 경우
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. (...생략...)
나같은 경우는 1번의 경우로.. page view count에서.. 자꾸 오늘 view가 잘 안맞는것 같아 소스를 열어보니.. date()로 오늘날짜를 가져오는데 UTC기준으로 가져오는것 같다.
어찌됐건.. php에 timezone이 설정되지 않거나 다르게 설정된 경우인데.. 현재 설정된 값은 phpinfo();를 이용하여 확인할 수 있다.
위의 경우는 이미 세팅을 해버려서 Asia/Seoul로 나오는데.. 처음에는 UTC로 나왔었다.
세팅하는 방법은 다음과 같이 2가지 방법이 있다.
1. data()함수를 쓰기전에 세팅해버리기(php 소스에서)
date_default_timezone_set('Asia/Seoul');
2. php.ini 에 세팅해버리기
이를 위해선 우선 php.ini 위치를 알아야하는데 php.ini가 여러개일수도 있다.
잘 모르면 역시 phpinfo();를 이용해서 load된 php.ini파일 위치를 알 수 있다. 보통 서버 마스터 php.ini 파일이 있고, 계정마다 로컬로 php.ini를 만들수 있게 하는 경우도 있다.
# vi php.ini
:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Seoul
:
보통 date.timezone 앞에 주석(;)처리 된경우가 많은데.. 주석을 풀고 원하는 타임존을 넣어주면 된다.