PHP 기본 시간대(timezone)
시각 동기화를 위하여 NTP 등을 이용하여 서버의 시간을 올바로 맞추어 놓습니다. 이는 이기종간 / 서버대 서버의 통신을 통하여 데이터를 주고 받을 때 시각 정보가 틀어져서 문제가 발생하지 않도록 하기 위해서 중요합니다.
서버에 설정된 시각도 중요하지만, PHP에서 이를 처리하는 date/time 관련 함수들의 시간대(timezone) 설정 또한 중요합니다.
PHP에서 시간대(timezone)을 설정하는 것은 기본적으로 "php.ini"에서 설정할 수 있습니다. 따로 설정하지 않은 경우에는 "UTC"가 기본 시간대(timezone)로 이용됩니다.
국내 서버라면, 한국 시각을 사용하게 될테니 "date" 명령를 이용하면 다음과 같은 결과가 표시됩니다.
첫 번째 "date" 명령을 그냥 실행하면 한국 시각으로 현재 시각이 출력됩니다. 두 번째 "date -u" 명령으로 "UTC" 시각으로 현재 시각을 출력하면, 한국시각 보다 9시간이 느린 "UTC" 시각이 표시됩니다.
따라서, PHP에서 별도의 시간대(timezone)을 설정하지 않고, date() 함수를 이용하여 현재 시각을 출력하면 "UTC" 시각으로 출력되어 현재 시각보다 9시간 느린 "UTC" 시각이 출력됩니다.
이를 해결하기 위하여 앞서 보여드린 대로, "php.ini" 파일의 "date.timezone" 항목에 한국시각으로 시간대(timezone)을 설정하기 위하여 "Asia/Seoul"을 입력하면 됩니다. 이 경우, 웹 서비스를 반드시 재시작 해주어야만 합니다.
"php.ini" 파일의 "date.timezone" 항목에 설정할 수 있는 시간대(timezone)에 대한 정보는 List of Supported Timezones 에서 상세하게 알아볼 수 있습니다.
PHP 코드로 시간대(timezone)를 동적으로 설정하는 방법은 "date_default_timezone_set()" 함수를 이용하는 것입니다.
즉, date/time 함수를 이용하기 전에 한 번 아래와 같이 시간대(timezone)를 설정하면 됩니다.
참고자료
- PHP date() function manual
- PHP Date/Time Functions
- PHP timezone 설정하기
- List of Supported Timezones
- How to set time zone in codeigniter?
'프로그래밍 > PHP' 카테고리의 다른 글
[PHP] CodeIgniter 2단계 이상의 하위 폴더로 소스 관리하는 방법 (0) | 2019.12.29 |
---|---|
[PHP] 문자열 결합 성능 비교 (Comparison of string concatenation performance) (0) | 2019.12.24 |
empty() 함수 사용 주의점 (3) | 2019.09.03 |
[PHP] 경고 : Creating default object from empty value (1) | 2019.08.28 |
[PHP] xDebug를 이용한 서버 원격 디버깅 (1) | 2019.08.22 |