"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');
Ответ 7
Я всегда держу эту строку внутри root rootign index.php
. Так что мой код работает на любом сервере
date_default_timezone_set('Asia/Dhaka');
Список поддерживаемых часовых поясов здесь
Ответ 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>