"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 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 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 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 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>
+348
27 мая '13 в 1:05
источник поделиться
23 ответа

Вероятно, вам нужно установить часовой пояс в строке конфигурации в вашем файле 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).

Вот список поддерживаемых часовых поясов .

+541
27 мая '13 в 1:14
источник

Если вы не можете изменить конфигурацию php.ini, вы можете использовать следующий фрагмент кода в начале вашего кода:

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

Список часовых поясов можно найти на http://www.php.net/manual/en/timezones.php.

+193
04 авг. '13 в 22:54
источник

Связанные вопросы


Похожие вопросы

Добавьте в свой файл index.php следующее. Я впервые столкнулся с этим, когда переместил приложение с моего XAMPP сервера на Apache 2.2 и PHP 5.4...

Я бы посоветовал вам сделать это в вашем файле index.php вместо файла php.ini.

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
+69
12 нояб. '13 в 6:30
источник
<? print(gmdate("Y")); ?> 

вместо

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

работал у меня (показывает текущий год и больше не показывает сообщение об ошибке). (Спасибо Крису выше)

+16
02 янв. '14 в 21:09
источник

Если это не ваши варианты

  • Изменение php.ini.
  • Добавление вызова date_default_timezone.

Вместо date вы можете использовать gmdate.

Я использовал gmdate( "Y" ), когда мне понадобился год для авторского snipplet.

+15
05 нояб. '13 в 14:33
источник

Если вы используете CodeIgniter и не можете изменить php.ini, я добавил следующее в начало index.php:

date_default_timezone_set('GMT');
+14
20 нояб. '15 в 8:40
источник

Я всегда держу эту строку внутри root rootign index.php. Так что мой код работает на любом сервере

date_default_timezone_set('Asia/Dhaka');

Список поддерживаемых часовых поясов здесь

+13
10 янв. '15 в 17:45
источник

@Юстис указал мне в правильном направлении, но его код не работал у меня. Это произошло:

// 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

Это решение предназначено не только для тех, кто не имеет полного доступа к системе. Это необходимо для любого script, когда вы предоставляете его кому-либо, кроме вас. Вы никогда не знаете, на каком сервере будет запущен script, когда вы его распространите кому-то другому.

+10
02 июл. '14 в 7:10
источник

Эта проблема прослушивала меня в течение некоторого времени, когда я пыталась внедрить "createbucket.php" script в композитор, и мне постоянно говорят, что моя часовая зона неверна.

В итоге единственное, что зафиксировало проблему, заключалось в следующем: $ 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

И вам будет хорошо:)

+4
16 авг. '16 в 6:13
источник

Я должен был поместить это в двойные кавычки.

date_default_timezone_set("America/Los_Angeles"); // default time zone
+4
22 июл. '14 в 10:09
источник

В дополнение к установке date.timezone = как упоминалось в нескольких ответах, Я обнаружил ошибку в файле php.ini, которая не позволяла ему добраться до date.timezone. То, как я нашел это, - это запустить php из командной строки в терминале. это привело к тому, что сообщение об ошибке было сообщено на линии 114. В моем случае я раскомментировал параметр для отображения ошибок, которые имели '|' между 2 значениями. Ему это не понравилось. Я удалил одно из значений и | и после этого все было хорошо.

+2
04 февр. '15 в 2:44
источник

Вы можете установить часовой пояс в вашем файле .htaccess

php_value date.timezone UTC
+1
18 янв. '18 в 21:41
источник
<? date_default_timezone_set('Europe/Istanbul'); ?>

Для php (или вашего местоположения).

+1
18 янв. '19 в 23:11
источник

Простой метод для двух часовых поясов.

<?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
18 авг. '15 в 4:07
источник

Если вы используете Plesk, попробуйте, сначала, откройте PHP Settings, внизу страницы, измените date.timezone с DEFAULT на UTC.

введите описание изображения здесь

введите описание изображения здесь

0
18 дек. '16 в 18:58
источник

Я размещаю свои ведра EC2 и S3 в регионе us-west-2 (Oregon). Когда я звонил $s3client->listBuckets(), чтобы перечислить существующие ковши в моем php, я получал исключение - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system timezone settings...". Я сделал следующие изменения, чтобы заставить его работать. Разделяя эти данные, если кто-то сталкивается с подобной проблемой, и любой из вышеперечисленных ответов не помог.

  • На основе документации @AWS "Настройка протокола сетевого времени" (NTP) я подтвердил, что статус службы ntpd прекрасен, запустив команду ntpstat. Если вы получите ошибку, эта ссылка поможет вам узнать, что происходит не так.
  • Открыт файл /etc/php.ini(некоторые могут иметь его в другом пути на основе установленной версии php) и обнаружили, что date.timezone не было установлено ни в какое значение, а также было отмечено по умолчанию. Я не комментировал, удалив ';' перед этой строкой и установите его значение "UTC" и сохраните файл.
  • Перезагруженные демоны http и ntp с помощью команд sudo service httpd restart и sudo service ntpd restart.

После этого я могу успешно перечислить ведра без каких-либо исключений. Надеюсь, это поможет.

0
26 сент. '16 в 7:49
источник

Для пользователя Docker: создайте локальный файл timezone.ini в своем проекте, настройте конфигурацию в docker-compose.yml,

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

timezone.ini

    date.timezone=Australia/Sydney
0
25 мая '18 в 0:04
источник

Если у вас нет доступа к файлу php.ini, создайте или отредактируйте файл .htaccess в корне своего домена или подпрограммы и добавьте его (сгенерированный cpanel):

<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

<IfModule php5_module>
php_value date.timezone "America/New_York"
</IfModule>

<IfModule lsapi_module>
php_value date.timezone "America/New_York"
</IfModule>
0
25 июл. '19 в 1:40
источник
    date_default_timezone_set(date_default_timezone_get());

Это простое решение для тех, кто не знает часовой пояс.

0
18 сент. '18 в 23:19
источник

У меня была ошибка с php-fpm в chroot-тюрьме. Я попытался создать etc/php.ini и /usr/share/zoneinfo в каталоге chroot, но это просто не сработало. Я даже попробовал рассказать демонам php-fpm, чтобы увидеть, какой файл они пропали без вести. Ничего не вышло.

Итак, в случае, если Google приведет вас сюда, потому что вы получите эту ошибку при использовании php-fpm, настроенной для chroot, вы можете исправить ее, добавив эту строку в /etc/php-fpm.d/www.conf в разделе ENV:

env[TZ] = America/New_York

Обычно для его вступления в силу требуется перезапуск php-fpm. Надеюсь, это поможет кому-то там.

0
12 мар. '17 в 2:01
источник

Быстрое решение, в то время как вы исправляете несовместимости, заключается в отключении отчетов об ошибках в вашем файле 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 );
0
04 сент. '14 в 12:23
источник

Этот ответ выше от 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.

0
03 авг. '17 в 21:56
источник

В моем конкретном случае у меня PHP настроен на использование PHP-FPM (FastCGI Process Manager). При выполнении phpinfo() из CLI я видел правильный часовой пояс, который я установил в php.ini, однако он все еще был некорректным в браузере и вызывал сбой моего кода. Мне просто нужно перезапустить службу php-fpm на сервере.

service rh-php56-php-fpm restart

Вам также может потребоваться перезапустить службу httpd, если вы отредактировали php.ini

service httpd restart
0
26 июл. '17 в 2:37
источник

Посмотрите другие вопросы по меткам или Задайте вопрос