복붙노트

"date () : 시스템의 시간대 설정에 의존하는 것이 안전하지 않습니다 ..."

PHP

"date () : 시스템의 시간대 설정에 의존하는 것이 안전하지 않습니다 ..."

서버에서 PHP 버전을 5.2.17에서 PHP 5.3.21로 업데이트하도록 요청했을 때이 오류가 발생했습니다.

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 86</p>

</div>
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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 86

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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 99
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  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. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 99</p>

</div>

해결법

  1. ==============================

    1.아마도 php.ini 파일의 설정 라인에 시간대를 넣어야 할 것입니다. php.ini 파일에 다음과 같은 블록이 있어야합니다 :

    아마도 php.ini 파일의 설정 라인에 시간대를 넣어야 할 것입니다. php.ini 파일에 다음과 같은 블록이 있어야합니다 :

    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    date.timezone = America/New_York
    

    그렇지 않은 경우 추가하십시오 (시간대를 바꿉니다). 구성한 후에는 httpd (service httpd restart)를 다시 시작하십시오.

    다음은 지원되는 시간대 목록입니다.

  2. ==============================

    2.php.ini 설정을 수정할 수 없다면, 코드 시작 부분에서 다음 스 니펫을 사용할 수 있습니다 :

    php.ini 설정을 수정할 수 없다면, 코드 시작 부분에서 다음 스 니펫을 사용할 수 있습니다 :

    date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want
    

    시간대 목록은 http://www.php.net/manual/en/timezones.php에서 찾을 수 있습니다.

  3. ==============================

    3.index.php 파일에 다음을 추가하십시오. 우선 XAMPP 서버에서 Apache 2.2 및 PHP 5.4로 응용 프로그램을 옮길 때이 문제가 발생했습니다 ...

    index.php 파일에 다음을 추가하십시오. 우선 XAMPP 서버에서 Apache 2.2 및 PHP 5.4로 응용 프로그램을 옮길 때이 문제가 발생했습니다 ...

    php.ini 파일 대신 index.php 파일에서 사용하는 것이 좋습니다.

    if( ! ini_get('date.timezone') )
    {
        date_default_timezone_set('GMT');
    }
    
  4. ==============================

    4.

    <? print(gmdate("Y")); ?> 
    

    대신에

    <? print(date("Y")); ?>
    

    나를 위해 일했는데 (현재 연도를 보여 주며 더 이상 오류 메시지를 보여주지 않습니다). (위의 Chris에게 감사드립니다)

  5. ==============================

    5.이것이 귀하의 선택이 아닌 경우

    이것이 귀하의 선택이 아닌 경우

    날짜 대신 gmdate를 사용할 수 있습니다.

    나는 저작권 스 니펫을 위해 1 년이 필요할 때 gmdate ( "Y")를 사용했다.

  6. ==============================

    6.CodeIgniter를 사용하고 있고 php.ini를 변경할 수 없다면 다음과 같이 index.php의 시작 부분에 추가했습니다 :

    CodeIgniter를 사용하고 있고 php.ini를 변경할 수 없다면 다음과 같이 index.php의 시작 부분에 추가했습니다 :

    date_default_timezone_set('GMT');
    
  7. ==============================

    7.나는 항상이 코드를 codeigniter의 루트 인 index.php 안에두고있다. 그래서 내 코드는 어떤 서버에서나 작동한다.

    나는 항상이 코드를 codeigniter의 루트 인 index.php 안에두고있다. 그래서 내 코드는 어떤 서버에서나 작동한다.

    date_default_timezone_set('Asia/Dhaka');
    

    지원되는 시간대 목록

  8. ==============================

    8.@ Justis는 올바른 방향으로 나를 지적했지만 코드는 제대로 작동하지 않았습니다. 이것은했다 :

    @ Justis는 올바른 방향으로 나를 지적했지만 코드는 제대로 작동하지 않았습니다. 이것은했다 :

    // set the default timezone if not set at php.ini
    if (!date_default_timezone_get('date.timezone')) {
        // insert here the default timezone
        date_default_timezone_set('America/New_York');
    }
    

    문서 : http://www.php.net/manual/en/function.date-default-timezone-get.php

    이 솔루션은 전체 시스템 액세스 권한이없는 사용자 만 사용할 수있는 것은 아닙니다. 모든 스크립트는 사용자가 아닌 다른 사람에게 제공 할 때 필요합니다. 스크립트를 다른 사람에게 배포 할 때 스크립트가 실행될 서버를 알 수 없습니다.

  9. ==============================

    9.이 문제는 작곡가에게 "createbucket.php"스크립트를 삽입하려고 시도하면서 시간대가 잘못되었다고 계속해서 말하면서 저를 괴롭 히고 있습니다.

    이 문제는 작곡가에게 "createbucket.php"스크립트를 삽입하려고 시도하면서 시간대가 잘못되었다고 계속해서 말하면서 저를 괴롭 히고 있습니다.

    결국 문제를 해결 한 유일한 방법은 다음과 같습니다. $ sudo nano /etc/php.ini

    시간대 검색

    [Date]
    ; Defines the default timezone used by the date functions
    ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
    date.timezone = UTC
    

    당신을 제거하십시오;

    그런 다음 마침내

    $ sudo service httpd restart
    

    그리고 갈 수있을거야. :)

  10. ==============================

    10.나는 이것을 큰 따옴표로 묶어야했다.

    나는 이것을 큰 따옴표로 묶어야했다.

    date_default_timezone_set("America/Los_Angeles"); // default time zone
    
  11. ==============================

    11.여러 답변에서 언급 한 date.timezone =을 설정하는 것 외에도, php.ini 파일에 date.timezone이 표시되지 않는 오류가 있습니다. 내가 찾은 방법은 터미널에서 명령 줄에서 PHP를 실행하는 것이 었습니다. 이로 인해 114 행에 오류가보고되었습니다. 제 경우에는 '|'이있는 오류를 표시하기위한 설정의 주석을 제거했습니다. 2 개의 값 사이. 그것은 그것을 좋아하지 않았다. 값 중 하나와 | 그 후 모든 것이 잘되었습니다.

    여러 답변에서 언급 한 date.timezone =을 설정하는 것 외에도, php.ini 파일에 date.timezone이 표시되지 않는 오류가 있습니다. 내가 찾은 방법은 터미널에서 명령 줄에서 PHP를 실행하는 것이 었습니다. 이로 인해 114 행에 오류가보고되었습니다. 제 경우에는 '|'이있는 오류를 표시하기위한 설정의 주석을 제거했습니다. 2 개의 값 사이. 그것은 그것을 좋아하지 않았다. 값 중 하나와 | 그 후 모든 것이 잘되었습니다.

  12. ==============================

    12.두 시간대에 대한 간단한 방법.

    두 시간대에 대한 간단한 방법.

    <?php 
    $date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); 
    
    date_default_timezone_set('America/New_York'); 
    
    echo date("Y-m-d h:iA", $date->format('U')); 
    
    // 2012-07-05 10:43AM 
    ?>
    
  13. ==============================

    13.비 호환성을 바로 잡는 빠른 해결책은 index.php 파일에서 오류보고를 비활성화하는 것입니다.

    비 호환성을 바로 잡는 빠른 해결책은 index.php 파일에서 오류보고를 비활성화하는 것입니다.

    아래와 같이 index.php에 아래 라인을 삽입하십시오 define ( '_JEXEC', 1);

    error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
    E_COMPILE_WARNING );
    
  14. ==============================

    14.나는 us-west-2 (오레곤) 지역에서 EC2 및 S3 버킷을 호스팅하고 있습니다. 내 s3client-> listBuckets () 내 PHP에서 기존 버킷 목록을 호출 할 때, 예외가 발생했습니다 - "예외 메시지 'Exception'예외 'DateTime :: __ construct () : 시스템의 시간대에 의존하는 것이 안전하지 않습니다. 설정 ... ". 나는 그것이 작동하도록하기 위해 아래의 변경을했다. 누군가가 유사한 문제를 겪고 있고 위의 답변 중 하나라도 도움이되지 않았다면 이러한 세부 정보를 공유하십시오.

    나는 us-west-2 (오레곤) 지역에서 EC2 및 S3 버킷을 호스팅하고 있습니다. 내 s3client-> listBuckets () 내 PHP에서 기존 버킷 목록을 호출 할 때, 예외가 발생했습니다 - "예외 메시지 'Exception'예외 'DateTime :: __ construct () : 시스템의 시간대에 의존하는 것이 안전하지 않습니다. 설정 ... ". 나는 그것이 작동하도록하기 위해 아래의 변경을했다. 누군가가 유사한 문제를 겪고 있고 위의 답변 중 하나라도 도움이되지 않았다면 이러한 세부 정보를 공유하십시오.

    이 후에 나는 예외없이 성공적으로 버킷을 나열 할 수 있습니다. 희망이 도움이됩니다.

  15. ==============================

    15.Plesk를 사용하고 있다면 먼저 PHP 설정 열기 페이지의 하단에서 date.timezone을 DEFAULT에서 UTC로 변경하십시오.

    Plesk를 사용하고 있다면 먼저 PHP 설정 열기 페이지의 하단에서 date.timezone을 DEFAULT에서 UTC로 변경하십시오.

  16. ==============================

    16.chroot jail에서 php-fpm을 실행하는 중에이 오류가 발생했습니다. chroot 디렉토리에 etc / php.ini와 / usr / share / zoneinfo를 만들려고했으나 제대로 작동하지 않았습니다. 필자는 심지어 php-fpm 데몬을 사용하여 그들이 누락 된 파일을 보려고 시도했는데 아무 것도 튀어 나오지 않았습니다.

    chroot jail에서 php-fpm을 실행하는 중에이 오류가 발생했습니다. chroot 디렉토리에 etc / php.ini와 / usr / share / zoneinfo를 만들려고했으나 제대로 작동하지 않았습니다. 필자는 심지어 php-fpm 데몬을 사용하여 그들이 누락 된 파일을 보려고 시도했는데 아무 것도 튀어 나오지 않았습니다.

    따라서 chroot에 구성된 php-fpm을 사용할 때이 오류가 발생하기 때문에 Google이 여기에있는 경우 ENV 섹션의 /etc/php-fpm.d/www.conf에이 행을 추가하여 문제를 해결할 수 있습니다.

    env[TZ] = America/New_York
    

    php-fpm을 다시 시작해야 정상적으로 적용됩니다. 희망이 사람을 밖으로 도움이됩니다.

  17. ==============================

    17.필자의 경우 PHP PHP-FPM (FastCGI Process Manager)을 사용하도록 PHP를 구성했습니다. CLI에서 phpinfo ()를 실행할 때 php.ini에서 설정 한 정확한 시간대를 보았지만 여전히 브라우저에서 올바르지 않아서 내 코드가 실패하게되었습니다. 난 단순히 서버에서 php-fpm 서비스를 다시 시작해야했습니다.

    필자의 경우 PHP PHP-FPM (FastCGI Process Manager)을 사용하도록 PHP를 구성했습니다. CLI에서 phpinfo ()를 실행할 때 php.ini에서 설정 한 정확한 시간대를 보았지만 여전히 브라우저에서 올바르지 않아서 내 코드가 실패하게되었습니다. 난 단순히 서버에서 php-fpm 서비스를 다시 시작해야했습니다.

    service rh-php56-php-fpm restart
    

    php.ini를 편집 한 경우 httpd 서비스를 다시 시작해야 할 수도 있습니다

    service httpd restart
    
  18. ==============================

    18.CtrlX에서 위의 대답은 정답이지만 완전히 작동하지 않을 수 있습니다. 이 줄을 php.ini 파일에 추가했습니다.

    CtrlX에서 위의 대답은 정답이지만 완전히 작동하지 않을 수 있습니다. 이 줄을 php.ini 파일에 추가했습니다.

    date.timezone = "America/Los_Angeles"
    

    내 PHP 스크립트 중 일부는 하위 폴더에 있기 때문에 모든 파일에 대해 PHP 오류가 제거되지 않았습니다. 그래서 .htaccess 파일을 편집하여 php.ini 파일을 재귀 적으로 (하위 폴더에서) 사용하도록 설정해야했습니다.

    suphp_configpath /home/account_name/public_html
    

    여기서 account_name은 cpanel 계정 이름이고 public_html은 php.ini 파일이있는 폴더입니다.

  19. ==============================

    19..htaccess 파일에서 시간대를 설정할 수 있습니다.

    .htaccess 파일에서 시간대를 설정할 수 있습니다.

    php_value date.timezone UTC
    
  20. ==============================

    20.도커 사용자의 경우 : 프로젝트에 로컬 timezone.ini 파일을 만들고 docker-compose.yml에 config를 설정하고,

    도커 사용자의 경우 : 프로젝트에 로컬 timezone.ini 파일을 만들고 docker-compose.yml에 config를 설정하고,

        volumes:
            - "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"
    

    timezone.ini

        date.timezone=Australia/Sydney
    
  21. from https://stackoverflow.com/questions/16765158/date-it-is-not-safe-to-rely-on-the-systems-timezone-settings by cc-by-sa and MIT license