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

Ответ 1

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

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 вместо файла php.ini.

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

Ответ 4

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

вместо

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

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

Ответ 5

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

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

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

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

Ответ 6

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

date_default_timezone_set('GMT');

Ответ 8

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

// 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, когда вы его распространите кому-то другому.

Ответ 9

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

date_default_timezone_set("America/Los_Angeles"); // default time zone

Ответ 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

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

Ответ 11

В дополнение к установке 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

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

php_value date.timezone UTC

Ответ 14

<? date_default_timezone_set('Europe/Istanbul'); ?>

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

Ответ 15

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

Ответ 16

Я размещаю свои ведра 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.

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

Ответ 17

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

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

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

Ответ 18

У меня была ошибка с 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. Надеюсь, это поможет кому-то там.

Ответ 19

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

service rh-php56-php-fpm restart

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

service httpd restart

Ответ 20

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

Ответ 21

Для пользователя 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

Ответ 22

    date_default_timezone_set(date_default_timezone_get());

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

Ответ 23

Если у вас нет доступа к файлу 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>