"дата(): это не безопасно полагаться на часовой пояс системы настройки…"
Я получил эту ошибку, когда я просил обновить 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>
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');
Я всегда держу эту строку внутри корня codeigniter
index.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.phpfile:вставьте строку ниже в ваш .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...".Я сделал ниже изменения, чтобы заставить его работать. Обмен этими деталями в случае, если кто-то сталкивается с подобной проблемой, и ни один из вышеперечисленных ответов не помог.
- на основе документации @ AWS настройка протокола сетевого времени (NTP), я подтвердил статус службы ntpd отлично, запустив
ntpstatкоманда. Если вы получаете сообщение об ошибке, эта ссылка поможет вам узнать, что происходит.- открыт /etc / php.ini файл (некоторые могут иметь его в другом пути на основе версии php установлен) и обнаружил, что
date.timezoneне было установлено никакого значения, а также он был прокомментирован по умолчанию. Я откомментировал, удалив '; ' перед этой строкой и установив ее значение в"UTC"и сохранил файл.- перезапуск HTTP и NTP демонов с помощью
sudo service httpd restartиsudo service ntpd restartкоманды.после это я могу перечислить ведра успешно без каких-либо исключений. Надеюсь, это поможет.
у меня была эта ошибка при запуске 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_YorkA перезапуск php-fpm обычно требуется для его вступления в силу. Надеюсь, это поможет кому-то там.
в моем конкретном случае у меня есть PHP, настроенный на использование PHP-FPM (FastCGI Process Manager). При выполнении
phpinfo()из CLI я увидел правильный часовой пояс, который я установил в php.ini, однако он все еще был неправильным в браузере и вызывал сбой моего кода. Мне просто нужно было перезапуститьphp-fpmсервис на сервере.service rh-php56-php-fpm restartвозможно, Вам также потребуется перезапустить
httpdсервис если вы редактировалиphp.iniservice 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-файл в.
для пользователя 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