"дата(): это не безопасно полагаться на часовой пояс системы настройки…"



Я получил эту ошибку, когда я просил обновить 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>
661   21  

21 ответов:

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

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

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

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

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

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

Я бы посоветовал вам сделать это в ваш вместо .

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

вместо

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

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

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

  • модификации php.ini.
  • добавлять date_default_timezone звонок.

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

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

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

date_default_timezone_set('GMT');

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

date_default_timezone_set('Asia/Dhaka');

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

@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

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

эта проблема была прослушивать меня в течение некоторого времени, как я пытаюсь ввести "createbucket.php " скрипт в composer, и мне все время говорят, что мой часовой пояс неверен.

в конце концов, единственное, что исправило проблему, было: $ 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

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

мне пришлось поставить его в двойные кавычки.

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

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

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

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

быстрое решение, пока вы исправляете несовместимости, заключается в отключении отчетов об ошибках в вашем index.php file:

вставьте строку ниже в ваш .php ниже define( ‘_JEXEC’, 1 );

error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
E_COMPILE_WARNING );

Я размещаю свое ведро EC2 и S3 в регионе us-west-2 (Орегон). Когда я звонил $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 команды.

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

Если вы используете Plesk, попробуйте, во-первых, открыть Настройки PHP, в нижней части страницы, изменить дату.часовой пояс от значения по умолчанию до UTC.

enter image description here

enter image description here

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

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

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

service rh-php56-php-fpm restart

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

service httpd restart

ответ С CtrlX это правильный ответ, но он не может полностью работать. Я добавил эту строку в свой 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-файл в.

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

php_value date.timezone UTC

для пользователя docker: Создайте локальный часовой пояс.ini-файл в вашем проекте, настроить конфигурацию в docker-compose.в формате YML,

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

часовой пояс.ini

    date.timezone=Australia/Sydney
    date_default_timezone_set(date_default_timezone_get());

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

Comments

    Ничего не найдено.