«Дата (): Гэта не бяспечна спадзявацца на налады гадзіннага пояса сістэмы ...»

Я атрымаў гэтую памылку, калі я прасіў, каб абнавіць PHP версіі ад 5.2.17 да 5.3.21 PHP на серверы.

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

A PHP Error was encountered


Severity: Warning
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
Filename: libraries/Log.php
Line Number: 86 </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;">

A PHP Error was encountered


Severity: Warning
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
Filename: libraries/Log.php
Line Number: 99 </div>
333

20 адказы

Вы, верагодна, трэба змясціць гадзінны пояс у радку канфігурацыі ў вашым 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 ( перазапуск службы HTTPD ).

Вось падтрымоўваных гадзінных паясоў .

521
дададзена
@ JoëlSalamin, Вы маглі б проста зрабіць PHP --ini . Гэта таксама дасць вам дадатковую інфармацыю аб магчымых памылках.
дададзена аўтар Pacerier, крыніца
@DOOManiac +1 тут жа
дададзена аўтар willdanceforfun, крыніца
<�Код> apachectl вытанчаная дастаткова (прынамсі, у мяне працуе).
дададзена аўтар Sergey Brunov, крыніца
Калі вы выкарыстоўваеце PHP-FPM - гэта таксама неабходна перазапусціць: судо сэрвіс PHP-FPM перазагрузка
дададзена аўтар Yuri Gor, крыніца
@Shehbaz Алі: Вы правільна напісалі назву гадзіннага пояса. Калі няма, то Апач не зможа пачаць
дададзена аўтар CtrlX, крыніца
@ShehbazAli: Вы павінны глядзець у вашу апача часопіс памылак, каб высветліць, чаму ў вас ёсць гэтая памылка HTTP 500
дададзена аўтар CtrlX, крыніца
Гэта вырашыць маю праблему! Проста інфармацыя для неадмыслоўцаў, як я, для таго, каб знайсці php.ini выкарыстоўваецца Apache, проста выканаць наступную каманду PHP -i | Grep php.ini .
дададзена аўтар Joël Salamin, крыніца
@CtrlX: Я выракаюся мой каментар; гэта была памылка карыстальніка з майго боку (я рэдагаваў няправільную копію php.ini)
дададзена аўтар DOOManiac, крыніца
каб быць ясна, пасля ўнясення гэтага змены, не забудзьцеся перазапусціць apache2 Sudo службы
дададзена аўтар Ryan, крыніца
дзякуй @CtrlX
дададзена аўтар Atul Chavan, крыніца
Калі вы выкарыстоўваеце PHP CLI (PHP -r або PHP -a) у кліенцкім тэрмінале, вам трэба адрэдагаваць файл php.ini CLI, а не apache2. YourC CLI php.ini файл звычайна можна знайсці на /etc/php5/cli/php.ini
дададзена аўтар KLVTZ, крыніца
тое ж самае працуе ў маёй лямпе. У акне, я ўсталяваў Apache, PHP, MySQL з файла .msi і наладзіць іх уручную. той жа код не працуе.
дададзена аўтар Hafiz Shehbaz Ali, крыніца
Я напісаў яго і перазапусціць сервер з componenet службы ў акне 10. але, то ён дае памылку 500 сервера.
дададзена аўтар Hafiz Shehbaz Ali, крыніца
Калі я выкарыстоўваю гэтае рашэнне. Вынік 500 ўнутраны errror сервер.
дададзена аўтар Hafiz Shehbaz Ali, крыніца
Гэта вырашыла яго для мяне, калі іншыя рашэнні не было. Я толькі атрымаў гэтую памылку, калі я выкарыстаў функцыі даты на той жа старонцы, як інтэграцыя з Amazon SES. Можа быць, гэта дапаможа камусьці яшчэ.
дададзена аўтар master_gracey, крыніца
Гэты адказ будзе працаваць, калі ваш сервер і уліковы запіс настроена, каб дазволіць вам выкарыстоўваць файл php.ini. Аднак, гэта не працуе для мяне на першым, таму што файл php.ini ня рэкурсіўны (не адносіцца да укладзеным тэчках). Таму я таксама павінен быў змяніць свой файл .htaccess і дадайце наступны радок: suphp_configpath/дома/your_name/public_html - дзе your_name гэтае імя вашага ўліковага запісу
дададзена аўтар Jeff Baker, крыніца
Як і першы каментар пра Apache неабходна таксама перазапусціць IIS для таго каб гэты эфект на Windows/IIS.
дададзена аўтар jross, крыніца

Калі вы не можаце змяніць канфігурацыю php.ini, вы можаце таксама выкарыстоўваць наступны фрагмент кода ў пачатку вашага кода:

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

Спіс гадзінных паясоў можна знайсці на сайце http://www.php.net/manual/en/timezones.php </а>.

182
дададзена
Для некаторых налад прычыны date.timezone = America/New_York ў маім php.ini і перазапусціць Apache не спыніць гэта паведамленне пра памылку пры запуску сцэнара з дапамогай SwiftMailer. Я ў канчатковым выніку таксама таго, каб дадаць date_default_timezone_set ( «Амерыка/New_York»); у верхняй частцы сцэнара, як прапанавана. Дзякуй!
дададзена аўтар kyle, крыніца
@ShehbazAli Вы павінны зрабіць што-то няправільна. У якім з вашых скрыптоў зрабіў ваш дадаць фрагмент кода?
дададзена аўтар Babatunde Adeyemi, крыніца
Я паспрабаваў ваша рашэнне. Цяпер, памылка 500 ўнутраная памылка сервера. Я выкарыстоўваю Apache 2.x і CodeIgniter.
дададзена аўтар Hafiz Shehbaz Ali, крыніца
той жа код працуе на вытворчасці. Там няма памылкі. Я усталяваў Apache, PHP і MySQL ўручную на акно 10. PHP, MySQL і Apache працы. Але гэты праект дае памылку.
дададзена аўтар Hafiz Shehbaz Ali, крыніца
Таксама не працуе па наборы ў php.ini (Nginx)
дададзена аўтар falko, крыніца

Дадайце наступнае ў ваш index.php файла. Упершыню я сутыкнуўся з гэтым, калі я пераехаў маю заяву ад майго XAMPP сервера на Apache 2.2 і PHP 5.4 ...

Я б параіў вам зрабіць гэта ў вашым index.php файл замест php.ini файл.

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
68
дададзена
лепшае рашэнне
дададзена аўтар David JorHpan, крыніца
выдатнае рашэнне, калі вам не абавязкова мець поўны доступ да сістэмы, думаю, гэта адзін для людзей з абмежаваным доступам або маюць патрэбу ў больш надзейнае рашэнне, і спалучаюць гэта з рэдагаваннем php.ini, калі вы можаце
дададзена аўтар aqm, крыніца
<? print(gmdate("Y")); ?> 

замест

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

працаваў для мяне (паказвае бягучы год і не больш паказвае паведамленне пра памылку). (Дзякуй Крысу вышэй)

15
дададзена
Гэта працуе для мяне
дададзена аўтар Mugoma J. Okomba, крыніца

Калі гэта не вашы варыянты

  • Змена php.ini .
  • Даданне date_default_timezone выклік.

Замест Дата можна выкарыстоўваць gmdate .

Я выкарыстаў gmdate ( «Y») , калі я меў патрэбу ў год для аўтарскага snipplet.

14
дададзена

Калі вы выкарыстоўваеце CodeIgniter і не можа змяніць php.ini, я дадаў наступнае ў пачатак index.php:

date_default_timezone_set('GMT');
12
дададзена
Яго працаваў для мяне.
дададзена аўтар Harsh Sanghani, крыніца
Яго таксама працаваць ўтвараюць мяне, дзякуй @Jose
дададзена аўтар Faridul Khan, крыніца
Гэта працуе на роднай PHP php.net/manual/en/function .date-змаўчанню-гадзінны пояс-set.php . TY, вы мяне на правільным шляху. У сувязі см спіс часовых зон для функцыі тут php.net/manual/en/timezones.php</а>
дададзена аўтар Louis Loudog Trottier, крыніца
Гэта працуе для мяне, дзякуй Хасэ за вашу дапамогу. З найлепшымі пажаданнямі, Саріт Гані i-splendid.com
дададзена аўтар Sarim Shekhani, крыніца

Я заўсёды трымаю гэтую лінію ўнутры кораня CodeIgniter ў index.php Так, што мой код працуе на любым сэрвэры

date_default_timezone_set('Asia/Dhaka');

Спіс падтрымоўваных Часавыя паясы тут

11
дададзена

@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');
}

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

Гэта рашэнне не толькі для тых, хто не мае поўнага доступу да сістэмы. Гэта неабходна для любога сцэнара, калі вы дае яго каму-небудзь яшчэ, акрамя вас. Вы ніколі не ведаеце, на якім сэрвэры сцэнар будзе выконвацца, калі вы будзеце распаўсюджваць яго камусьці іншаму.

10
дададзена

Я павінен быў паставіць яго ў падвойных двукоссях.

date_default_timezone_set("America/Los_Angeles");//default time zone
4
дададзена
Усё яшчэ не workie (у Mac OSX), так што я ў рэшце рэшт зламаўся, і дадаў /etc/php.ini: date.timezone = Амэрыка/Los_Angeles
дададзена аўтар MarkHu, крыніца

Гэтае пытанне падслухоўванне мяне на нейкі час, як ім спрабуе надаць «createbucket.php» сцэнар у кампазітар і я працягваю быць сказаным мой гадзінны пояс няправільна.

In the end the only thing that fixed the issue was to: $ sudo nano /etc/php.ini

Search for timezone

[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

Ensure you remove the ;

Тады, нарэшце,

$ sudo service httpd restart

І вы будзеце добра ісці :)

4
дададзена

Просты метад для два гадзінных пояса.

<?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 
?>
1
дададзена

У дадатак да ўстаноўцы date.timezone =, як паказана ў некалькіх адказаў, Я знайшоў памылку ў файле php.ini, які падтрымліваў яго ад траплення ў date.timezone. Тое, як я выявіў, што, запусціўшы PHP з каманднага радка ў тэрмінале. гэта выклікала памылку паведамляцца ў радку 114. У маім выпадку я раскаментаваць параметр для адлюстравання памылак, якія мелі «|» ад 2 да значэнняў. Гэта не спадабалася. Я выдаліў адзін з значэнняў, так і | і ўсё было добра пасля таго,

1
дададзена

У маім канкрэтным выпадку, у мяне ёсць PHP настроены на выкарыстанне PHP-FPM (FastCGI Process Manager). Пры выкананні phpinfo() з CLI я бачыў правільны гадзінны пояс, які я ўстанавіў у php.ini, аднак яна па-ранейшаму няправільна ў браўзэры і прымушаючы мой код на правал. Я проста неабходна перазапусціць PHP-FPM службы на сэрвэры.

service rh-php56-php-fpm restart

You may also need to restart the httpd service if you edited the php.ini

service httpd restart
0
дададзена

У мяне была гэтая памылка запуску PHP-FPM ў CHROOT турме. Я паспрабаваў стварыць і г.д./php.ini і/USR/долі/ZoneInfo ў каталогу каранёвым, але гэта проста не працуе. Я нават паспрабаваў Трассирование Інгі PHP-FPM дэманаў, каб убачыць, які файл яны прапалі без вестак - нічога не выскачыць.

Такім чынам, у выпадку Google прыносіць вам тут, таму што вы атрымаеце гэтую памылку пры выкарыстанні PHP-FPM, сканфігураваны для Chroot, верагодна, можна выправіць, дадаўшы наступны радок /etc/php-fpm.d/www.conf у раздзеле ENV:

env[TZ] = America/New_York

РНР-FPM перазагрузка звычайна патрабуецца для таго, каб уступіць у сілу. Спадзяюся, што гэта дапамагае нехта там.

0
дададзена

This answer above from CtrlX is the correct answer, but it may not work completely. I added this line to my php.ini file:

date.timezone = "America/Los_Angeles"

але яна не ўстараніла памылку PHP для ўсіх маіх файлаў, таму што некаторыя з маіх PHP скрыптоў у падтэчку. Так што мне прыйшлося змяніць <�моцны> .htaccess файлах наладкі php.ini, якія будуць выкарыстоўвацца рэкурсіўна (ва ўкладзеных папках):

suphp_configpath /home/account_name/public_html

дзе account_name гэтае імя вашай ўліковага запісу і Cpanel public_html папка файл php.ini знаходзіцца.

0
дададзена

Калі вы выкарыстоўваеце Plesk, паспрабуйце, Па-першае, адкрыйце Налады PHP, у ніжняй частцы старонкі, змена date.timezone ад DEFAULT да UTC.

enter image description here

enter image description here

0
дададзена

Хуткае рашэнне ў той час як вашыя выправіць несумяшчальнасці, каб адключыць паведамленні пра памылкі ў вашым кодзе <> index.php файла:

Insert the line below into your index.php below define( ‘_JEXEC’, 1 );

error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
E_COMPILE_WARNING );
0
дададзена

I am hosting my EC2 and S3 bucket in us-west-2 (Oregon) region. When I was calling $s3client->listBuckets() to list existing buckets in my PHP, I was getting exception - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". I made below changes to make it work. Sharing these details in case someone is facing similar issue and any of above answers have not helped.

  1. На аснове дакументацыі @ AWS Налада (Network Time Protocol NTP) , я пацвердзіў статус пЪрд службы ў парадку, запусціўшы ntpstat каманду . Калі вы атрымліваеце паведамленне пра памылку, гэтая спасылка дапаможа вам даведацца, што адбываецца не так.
  2. Адкрыты /etc/php.ini файл (некаторыя з іх могуць мець яго ў іншы шлях заснаваны на версіі PHP усталяваны) і выявілі, што date.timezone не быў устаноўлены на любы значэнне, а таксама ён быў прокомментірован па змаўчанні. Я не-прокомментірованы выдалення «;» да гэтай лініі і ўсталюйце яго значэнне «UTC» і захавайце файл.
  3. Restarted HTTP і НТП дэманамі, выкарыстоўваючы рэстарт судо сэрвіс HTTPD і Sudo службы пЪрд рэстарт каманды.

Пасля гэтага я магу пералічыць вядра паспяхова без якіх-небудзь выключэнняў. Спадзяюся, што гэта дапамагае.

0
дададзена

Вы можаце ўсталяваць гадзінны пояс ў вашым .htaccess файл

php_value date.timezone UTC
0
дададзена

Для карыстальніка Docker: Стварэнне лакальнага файла timezone.ini у праекце, наладзіць конфіг ў Докер-compose.yml,

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

timezone.ini

    date.timezone=Australia/Sydney
0
дададзена