"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.아마도 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.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.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.
<? print(gmdate("Y")); ?>
대신에
<? print(date("Y")); ?>
나를 위해 일했는데 (현재 연도를 보여 주며 더 이상 오류 메시지를 보여주지 않습니다). (위의 Chris에게 감사드립니다)
-
==============================
5.이것이 귀하의 선택이 아닌 경우
이것이 귀하의 선택이 아닌 경우
날짜 대신 gmdate를 사용할 수 있습니다.
나는 저작권 스 니펫을 위해 1 년이 필요할 때 gmdate ( "Y")를 사용했다.
-
==============================
6.CodeIgniter를 사용하고 있고 php.ini를 변경할 수 없다면 다음과 같이 index.php의 시작 부분에 추가했습니다 :
CodeIgniter를 사용하고 있고 php.ini를 변경할 수 없다면 다음과 같이 index.php의 시작 부분에 추가했습니다 :
date_default_timezone_set('GMT');
-
==============================
7.나는 항상이 코드를 codeigniter의 루트 인 index.php 안에두고있다. 그래서 내 코드는 어떤 서버에서나 작동한다.
나는 항상이 코드를 codeigniter의 루트 인 index.php 안에두고있다. 그래서 내 코드는 어떤 서버에서나 작동한다.
date_default_timezone_set('Asia/Dhaka');
지원되는 시간대 목록
-
==============================
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.이 문제는 작곡가에게 "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.나는 이것을 큰 따옴표로 묶어야했다.
나는 이것을 큰 따옴표로 묶어야했다.
date_default_timezone_set("America/Los_Angeles"); // default time zone
-
==============================
11.여러 답변에서 언급 한 date.timezone =을 설정하는 것 외에도, php.ini 파일에 date.timezone이 표시되지 않는 오류가 있습니다. 내가 찾은 방법은 터미널에서 명령 줄에서 PHP를 실행하는 것이 었습니다. 이로 인해 114 행에 오류가보고되었습니다. 제 경우에는 '|'이있는 오류를 표시하기위한 설정의 주석을 제거했습니다. 2 개의 값 사이. 그것은 그것을 좋아하지 않았다. 값 중 하나와 | 그 후 모든 것이 잘되었습니다.
여러 답변에서 언급 한 date.timezone =을 설정하는 것 외에도, php.ini 파일에 date.timezone이 표시되지 않는 오류가 있습니다. 내가 찾은 방법은 터미널에서 명령 줄에서 PHP를 실행하는 것이 었습니다. 이로 인해 114 행에 오류가보고되었습니다. 제 경우에는 '|'이있는 오류를 표시하기위한 설정의 주석을 제거했습니다. 2 개의 값 사이. 그것은 그것을 좋아하지 않았다. 값 중 하나와 | 그 후 모든 것이 잘되었습니다.
-
==============================
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.비 호환성을 바로 잡는 빠른 해결책은 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.나는 us-west-2 (오레곤) 지역에서 EC2 및 S3 버킷을 호스팅하고 있습니다. 내 s3client-> listBuckets () 내 PHP에서 기존 버킷 목록을 호출 할 때, 예외가 발생했습니다 - "예외 메시지 'Exception'예외 'DateTime :: __ construct () : 시스템의 시간대에 의존하는 것이 안전하지 않습니다. 설정 ... ". 나는 그것이 작동하도록하기 위해 아래의 변경을했다. 누군가가 유사한 문제를 겪고 있고 위의 답변 중 하나라도 도움이되지 않았다면 이러한 세부 정보를 공유하십시오.
나는 us-west-2 (오레곤) 지역에서 EC2 및 S3 버킷을 호스팅하고 있습니다. 내 s3client-> listBuckets () 내 PHP에서 기존 버킷 목록을 호출 할 때, 예외가 발생했습니다 - "예외 메시지 'Exception'예외 'DateTime :: __ construct () : 시스템의 시간대에 의존하는 것이 안전하지 않습니다. 설정 ... ". 나는 그것이 작동하도록하기 위해 아래의 변경을했다. 누군가가 유사한 문제를 겪고 있고 위의 답변 중 하나라도 도움이되지 않았다면 이러한 세부 정보를 공유하십시오.
이 후에 나는 예외없이 성공적으로 버킷을 나열 할 수 있습니다. 희망이 도움이됩니다.
-
==============================
15.Plesk를 사용하고 있다면 먼저 PHP 설정 열기 페이지의 하단에서 date.timezone을 DEFAULT에서 UTC로 변경하십시오.
Plesk를 사용하고 있다면 먼저 PHP 설정 열기 페이지의 하단에서 date.timezone을 DEFAULT에서 UTC로 변경하십시오.
-
==============================
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.필자의 경우 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.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..htaccess 파일에서 시간대를 설정할 수 있습니다.
.htaccess 파일에서 시간대를 설정할 수 있습니다.
php_value date.timezone UTC
-
==============================
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
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
'PHP' 카테고리의 다른 글
Laravel에서 여러 데이터베이스를 사용하는 방법 (0) | 2018.09.11 |
---|---|
Access-Control-Allow-Origin을 우회하는 방법? (0) | 2018.09.11 |
참고 : json_encode를 사용하여 "특수"유니 코드 문자가 이상하게 인코딩되는 이유는 무엇입니까? (0) | 2018.09.11 |
PHP 작업을 비동기 적으로 실행하십시오. (0) | 2018.09.11 |
PHP / MySQL은 행을 삽입 한 다음 'id'를 얻습니다. (0) | 2018.09.11 |