ошибка часового пояса по умолчанию в php
-
22-07-2019 - |
Вопрос
Я получил следующую ошибку / предупреждение при попытке установить Kohana / SilverStripe.
Что это значит и что я для этого делаю?
Warning:
date_default_timezone_get():
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 'Asia/Calcutta' for '5.5/no DST' instead in C:\Server\apache\htdocs\kohana\system\core\Kohana.php on line 136
Заранее спасибо!
Решение
Это не ошибка, а предупреждение, поэтому оно не блокирует работу вашего приложения.
Явно установите правильный часовой пояс с помощью date_default_timezone_set() в C:\Server\apache\htdocs\kohana\system\core\Kohana.php в строке 136
Вы должны выбрать из допустимые часовые пояса
Редактировать
Как указано в самом предупреждающем сообщении, у вас на самом деле есть более простой выбор, чем редактирование файла стороннего программного обеспечения.То есть.настройка PHP так, как это должно быть.
- отредактируйте свой
php.ini
и отрегулируйте значениеdate.timezone = America/New_York
или
- используйте
php_value
директива в конфигурации вашего веб-сервера, чтобы установить ее в вашем конфигурация виртуального хостинга или.htaccess
:php_value date.timezone America/New_York
Другие советы
Комментарий OP к его собственному вопросу выше подразумевает, что часовой пояс по умолчанию не может быть установлен в php.ini, что неверно - фактически, во многих случаях его установка там предпочтительный.И поскольку этот ответ SO является одним из первых обращений в Google к "ошибке часового пояса php по умолчанию", я сохраню другим утраченное здравомыслие.
Очень распространенной причиной этой ошибки является не столько неправильное написание города зоны или страны (например"Нью-Йорк", "Лос-Анджелес") в используемом файле php.ini, но вместо этого для включения встроенных пробелов, а не подчеркиваний в идентификатор, и, таким образом, "опечатки" в полной константе.
Это также будет делать то, что вы хотите, без необходимости устанавливать его на каждой странице во время выполнения (проверено на PHP 5.4 и 5.3, в Windows, Linux и OSX):
В php.ini:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York
; ^^^^^^^^^^^^^^^^ * Must_Use_Underscores *
Кроме того, если вы проверяли и перепроверяли орфографию и определенный это правильно, убедитесь, что вы редактируете фактический используемый файл php.ini:
Веб-контекст (создайте тестовый файл test.php, а затем подтвердите date.timezone
там):
<?php phpinfo(); ?>
Командная строка Linux /OSX:
$ php -i | grep "timezone"
Окна командной строки:
C:\> php -i | find "timezone"
Порядок приоритета для получения конфигурации даты часового пояса по умолчанию подробно описан здесь.
Если у вас нет возможности изменить php.ini
, добавьте это в свой _ss_environment.php
или mysite / _config.php
файлы:
<код> date_default_timezone_set ( '...'); код>
где ...
является одним из допустимых часовых поясов PHP.