Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PHP5 и DATE


Автор: Gold Dragon 18.8.2008, 13:15
в общем дописал к error_reporting(E_ALL); это E_STRICT
[/code]
и при работе с Date выскакивает предупреждение
Цитата

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable 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 'Europe/Moscow' for '4.0/DST' instead in Z:\home\ruskabak.qqq\www\index.php on line 41

как это исправить?

Добавлено через 34 секунды
и вообще, что это такое?

Автор: HackMan 18.8.2008, 13:25
Введение:
Цитата
E_STRICT (integer)    Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.

Цитата

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable 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 'Europe/Moscow' for '4.0/DST' instead in Z:\home\ruskabak.qqq\www\index.php on line 41

Пишет, что небезопасно полагаться на системный часовой пояс и советуют задать его через http://ua.php.net/manual/en/function.date-default-timezone-set.php. Совет связан с исключением таких недоразумений, как: у тебя на компьютере один часовой пояс, загружаешь на сервер - а там другой, и вермя выскакивает не то, что ожидается увидеть...наверное  smile 

Есть 5 способов от этого избавиться:
  • Последовать совету
  • Использовать @
  • Отключить E_STRICT
  • Использовать другие функции для работы со временем
  • Снести PHP

Автор: Gold Dragon 18.8.2008, 14:06
т.е. теперь Date считается работающей не валидно так как не задан часовой пояс? Надеюсь это только предупрежденние а не ошибка

Автор: HackMan 18.8.2008, 14:10
Ничего смертельного здесь нет, а ошибка это или нет - зависит исключительно от логики сайта. На то и предупреждение дают.

Автор: Feldmarschall 18.8.2008, 14:12
Цитата(Gold Dragon @  18.8.2008,  14:06 Найти цитируемый пост)
 Надеюсь это только предупрежденние а не ошибка 

Gold Dragon, ты бы почитал о том, что такое E_STRICT, перед тем, как ставить.
Где написано, что эта директива показывает "ошибки"?

Автор: Gold Dragon 18.8.2008, 14:19
Feldmarschall, да вообще-то почитал. Я и спрашива про предупреждение.. А поставил для того чтобы всё(!) было валидно

Автор: HackMan 18.8.2008, 14:27
Всё валидным быть не может. Если у тебя всё идеально - ты плохой программист  smile 

Автор: Anarki 18.8.2008, 16:59
http://www.php.net/manual/en/datetime.configuration.php
Цитата

Date/Time Configuration Options     Name    Default    Changeable    Changelog
date.timezone  ""  PHP_INI_ALL  Available since PHP 5.1.0.

Цитата

  date.timezone  string

    The default timezone used by all date/time functions if the TZ environment variable isn't set. The precedence order is described in the date_default_timezone_get() page. See List of Supported Timezones for a list of supported timezones.


http://www.php.net/manual/en/function.date-default-timezone-set.php

Автор: HackMan 18.8.2008, 17:04
Anarki, я уже давал эту ссылку  smile 

Автор: Anarki 18.8.2008, 17:09
Цитата(HackMan @ 18.8.2008,  20:04)
Anarki, я уже давал эту ссылку  smile

Я чуток дополнил.  smile 

Автор: Gold Dragon 19.8.2008, 07:46
у меня с английским туго smile Как это реально использовать? Примерчик можно?  smile 

Автор: Mal Hack 19.8.2008, 11:44
Цитата(HackMan @  18.8.2008,  15:27 Найти цитируемый пост)
Всё валидным быть не может. Если у тебя всё идеально - ты плохой программист  smile  

Бред. Одно из правил трансляции: программа должна компилироваться без единого варнинга. Если варнинг есть, значит что-то не так.

Автор: Gold Dragon 19.8.2008, 11:45
Mal Hack, так решение какое? smile

Автор: Mal Hack 19.8.2008, 11:52
Gold Dragon, надо задать временную зону. Либо через php.ini, либо через .htaccess, либо через http://ru2.php.net/manual/en/function.date-default-timezone-set.php
Список того, что можно задать - тут: http://ru2.php.net/manual/en/timezones.php

Автор: Gold Dragon 19.8.2008, 12:38
всё.. спасибо.. разобрался

Автор: HackMan 19.8.2008, 16:37
Mal Hack, не надо принимать мои слова так близко. Я имел в виду, что никто не идеален и каждый допускает ошибки, и за всеми ошибками уследить невозможно (хотя в идеале нужно)

Автор: Mal Hack 19.8.2008, 17:02
Цитата(HackMan @  19.8.2008,  17:37 Найти цитируемый пост)
и за всеми ошибками уследить невозможно (хотя в идеале нужно) 

Я в данном случае говорю о тех, которые выкидывает транслятор на этапе интерпретации, т.е. до выполнения.

Автор: HackMan 19.8.2008, 17:13
Если интерпретатор и промолчит - это ещё не значит, что нет ошибок. Существуют же ещё и логические ошибки, которые ни один транслятор не найдёт. И неважно, выполнился уже код или нет, ошибка остаётся ошибкой  smile 

Автор: Mal Hack 19.8.2008, 17:31
Цитата(HackMan @  19.8.2008,  18:13 Найти цитируемый пост)
Если интерпретатор и промолчит - это ещё не значит, что нет ошибок. Существуют же ещё и логические ошибки, которые ни один транслятор не найдёт. И неважно, выполнился уже код или нет, ошибка остаётся ошибкой  smile  

Выполнение я не трогаю. Я имею ввиду только те ошибки, которые определяются на этапе трансляции, ДО ВЫПОЛНЕНИЯ. Вот их НАДО 100% обработать.

Автор: HackMan 19.8.2008, 17:41
Цитата(Mal Hack @  19.8.2008,  17:31 Найти цитируемый пост)
Выполнение я не трогаю

я это прекрасно понял с первого раза  smile а я вот и такие ошибки имел в виду, когда написал ту фразу. Ладно, всё, заканчиваем оффтоп разводить

Цитата
их НАДО 100% обработать

само собой, надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)