it-swarm.com.ru

msgstr "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>
338
user1852837

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

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

534
CtrlX

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

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

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

189
Babatunde Adeyemi

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

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

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
69
Justis Matotoka
<? print(gmdate("Y")); ?> 

вместо 

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

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

16
Susan Taunton

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

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

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

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

15
Chris

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

date_default_timezone_set('GMT');
14
Jose

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

date_default_timezone_set('Asia/Dhaka');

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

11
Shaiful Islam

@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

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

10
John Linhart

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

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

Эта проблема беспокоила меня в течение НЕКОТОРОГО времени, так как я пытаюсь внедрить скрипт «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

И тебе будет хорошо идти :)

4
T0mmyKn1fe

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

php_value date.timezone UTC
1
Alexander Lindquist
<? date_default_timezone_set('Europe/Istanbul'); ?>

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

1
Mehmet Şerif Çaçan

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

1
M Graham

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

<?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
Saurabh Chandra Patel
    date_default_timezone_set(date_default_timezone_get());

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

0
Mohammed Alhanafi

У меня была эта ошибка при запуске 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
Don Law

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

 enter image description here

 enter image description here

0
Latief Anwar

Этот ответ выше из 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
Jeff Baker

В моем конкретном случае у меня 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
EternalHour

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

Я размещаю свои ведра 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's timezone settings...". Я внес следующие изменения, чтобы он работал. Разделение этих деталей в случае, если кто-то сталкивается с подобной проблемой, и любой из вышеупомянутых ответов не помог.

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

После этого я могу без проблем перечислять корзины. Надеюсь это поможет.

0
Maruti C

Для пользователя докера: Создайте локальный файл 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
Jin