커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 프로그래밍 / 개발 > 웹 프로그래밍 / PHP 도움말
검색 : 사이트 WHOIS 웹서버 종류


  헉! php 5.3.x에서 error log가 UTC 시간으로 남는다. 작성일 : 2012/01/31 18:24
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 9557
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : 헉! php 5.3.x에서 error log가 UTC 시간으로 남는다.
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2012.1.31(화)
    작성일 : 2012.2.3(금) php 5.3.10 내용 추가

    1월에 나온 php 5.3.9버전과 이후에 나온 5.3.10버전에서 error log를 남길 때 UTC기준으로 로그가 남는다.
    로그 시간에 +9시간( 05:23:29 UTC이라면 14:23:29 )을 살펴봐야한다는 것은 여간 불편한게 아니다.

     
    [13-Jan-2012 13:51:51] ... 생략 ...     <-- 5.3.8이하, 5.2.x 버전에서는 localtime기준으로 정상적으로 남는다.
    [13-Jan-2012 05:23:29 UTC] ... 생략 ... <-- 5.3.9버전부터 UTC기준으로 로그가 남는다.
     




    1. 왜 UTC기준으로 로그가 남을까

    main/main.c 소스를 살펴봤더니 error log의 날짜포맷이 변경되었다.

    1) php 5.3.8 이하, 5.2.x버전 (5.3.8버전에서 588번째줄)

     
    error_time_str = php_format_date("d-M-Y H:i:s", 11, error_time, 1 TSRMLS_CC);
     


    2) php 5.3.9~5.3.10, 5.4 버전

    5.3.9버전 기준으로 603번째줄을 보면 다음과 같이 되어 있다.

     
    error_time_str = php_format_date("d-M-Y H:i:s e", 13, error_time, 0 TSRMLS_CC);
     


    숫자 13은 날짜형식의 자리수이다. 날짜 형식에 e가 추가 되었는데 timezone을 말한다. UTC, GMC, Asia/Seoul 등을 의미한다. 여기까지는 문제가 없다. 그런데 '0 TSRMLS_CC'라고 표시되어 있다. 0이면 UTC이고, 1이면 localtime기준으로 시간을 표시한다. 따라서 localtime기준(우리 나라 시간)으로 로그를 남기고 싶다면 5.3.8이전 버전처럼 패치하고 설치해야 한다.

    ※ 티니(tini)가 php 5.3의 Revision Log를 살펴보니 이미 작년 11.25일에 위처럼 변경이 되어 있었다. 5.3.8은 작년 8월에 발표, 5.3.9은 올 1월에 발표.
       http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3/main/main.c?revision=319823&view=markup
       Fixed bug #60373 (Startup errors with log_errors on cause segfault).


    * php 5.3.9~5.3.10 main.c 패치파일 (5.3.10에서 동일하게 사용가능)

    직접 수정하기 귀찮으면 패치 파일 받아서 적용. php소스/main/ 디렉토리로 이동한 후 patch명령을 실행하면 된다.

     
    patch < php5_3_main.c.patch.txt
     


    2. php에서 error log를 남기려면

    참고로 error log를 파일로 남길 때는 php.ini에서 다음과 같이 설정한다. 그리고 웹서버 데몬이 이 파일을 쓰기 가능하게 해준다.

     
    log_errors = On
    error_log = /경로/로그 파일명
     

      커피닉스 카페 최근 글
    [08/25] #gpt_question_subje
    [08/20] From what I've seen
    [08/14] сайт
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~