질문을 삭제하지 말아주세요.!
 
1
0
-1

ubuntu와 nginx, php7.0-fpm,  mysql 으로 이루어진 환경에서 작업 중입니다.

ubuntu 자체 내에서 date를 찍으면 시간이 현재시간으로 알맞게 나오는데

mysql의 select now()를 찍게되면 거진 9시간정도 전의 시간이 나옵니다.

php.ini의 date.timezone도 asia/seoul로 되어 있습니다.

phpinfo의 system쪽도 시간이 현재 시간으로 나오고 있는데

확인해봐야 할 것이 뭐가 있을까요?


그리고 참고로 var/log/nginx/access.log 파일에 찍히는 시간도 9시간 전의 시간으로 찍힙니다.

라라벨 자체내의 로그는 현재시간으로 찍히구요....

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      저도 방금 확인해보니 homestead vm의 시스템 시간이 utc를 기준하여 있네요.

      시스템 시간 변경하면  db 시간 문제가 해결될 겁니다.


      라라벨 또는 php 의 timezone 설정과 시스템 timezone 은 서로 동기화 되지 않으니 발생하는 문제로 각각 따로 확인해주야 합니다.

        CommentAdd your comment...
      1.  
        1
        0
        -1
        • 우분투에서 date 명령을 했을 때 UTC+9 서울 시간이 나온다면 운영체제의 타임존이 서울로 설정된 것입니다.
        • MySQL에서 select now() 했을 때, 9시간 전의 시간이 나오는 이유는 MySQL의 전역 타임존 설정이 UTC로 되어 있기 때문입니다.
        • PHP에서 (new DateTime)->format('Y-m-d H:i:s'); 했을 때 서울 시간이 나온다면, 현재 런타임이 참조하는 php.ini 에 서울 타임존으로 설정되었기 때문입니다.
        • 라라벨에서 Carbon\Carbon::now(); 했을 때 서울 시간이 나온다면, 라라벨의 config/app.php 에 설정한 타임존이 서울이기 때문입니다.

        MySQL은 전역 설정과 세션 설정이 있습니다. 항상 하위 설정이 상위 설정을 오버라이드합니다. 마지막 라라벨의 경우에는 MySQL 세션(==커넥션==프로세스)을 맺을 때, 전역 타임존 설정이 무엇이든 간에, 커넥션 설정을 통해 타임존을 서울을 설정하기 때문입니다.


          CommentAdd your comment...