Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.102.249] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Думаю, название темы с описанием говорит о сути вопроса. У меня Windows 7 Ultimate русское издание, PHP 5.2.17. Вообще-то, пишу Android-приложение для службы такси, тут уже светился с этим на форуме. Но оно не может работать без веб-сервиса, от которого должно принимать и отправлять данные. На рабочем сервере мне тестировать запрещено, поэтому поднял сайт у себя. Сегодня только что столкнулся с тем, что мой тестовый экипаж такси не отображается на карте, хоть и посылает состояние Свободен и текущие тестовые координаты где-то в центре города. Хотя утром еще все работало. Долго ковырялся, посылал те же данные из формы на сайте - тоже не успешно. В итоге обнаружил, что в одной из таблиц (а наверно, и во многих других) время последнего обновления данных значится на час вперед, a-la по зимнему времени. Посмотрел в phpinfo() - там значится Default timezone: Europe/Moscow. Помню, что проставлял это в php.ini. Директивы для задания/снятия перехода на зимнее время я не нашел в справке. Хотелось бы зону оставить, но так, чтобы переход на зимнее время убрался. Может, это и не есть корень зла, и отображение экипажа не работает по другой причине, но хотелось бы эту проблему со временем решить. Буду признателен за помощь! Добавлено Да, в виндах стоит московское время без перехода на зимнее. |
Сообщ.
#2
,
|
|
|
В PHP есть встроенная база данных времени. В ней содержится отношение зона+текущее время по UTC+текущее смещение от UTC. То есть она знает, что 27-го марта в Москве летнее время. А знает она потому, что создана была достаточно давно.
Проблема усугубляется тем, что эта база вкомпилена в PHP, а PHP ветки 5.2 больше не поддерживается и обновлений для него не будет (емнип, обновление этой БД, затрагивающее МСК было осенью 2011-го, а PHP 5.2.17 вышел ещё весной). Варианты решения: 1. можно попробовать найти более-менее новое расширение timezone (не уверен, что для windows оно есть - в некоторых юниксах есть в репозитории). Можно попробовать начать от сюда: http://pecl.php.net/package/timezonedb 2. пересобрать PHP, взяв новую версию ext/date/lib/timezone*.* 3. самое лучшее (хотя и не всегда возможно сделать быстро) обновить PHP. |
Сообщ.
#3
,
|
|
|
У меня до недавнего времени был PHP 5.3, потом совсем чуток попробовал на PHP 5.4. Откатился к PHP 5.2, потому что в более новом у меня не работал libcurl. Как выяснилось - из-за конфликта бинарников Apache, собранных в VC6, и бинарников самого PHP для двух последних версий, собранных в VC9 - модуль PHP просто сбаивал и перезагружался. Установка 5.2-версии это устранила.
Наверно, все-таки лучше, из предложенных вариантов, полноценно портануться на 5.3 или 5.4. Для этого надо найти бинарники Apache, собранные в VC9, такие вроде бы где-то есть. Попробую уже завтра утром нарыть. |
Сообщ.
#4
,
|
|
|
Ээээ, а если поднимать на локалхосте, то зачем лишние геморы? Качаешь боянистый денвер и радуешься жизни
|
Сообщ.
#5
,
|
|
|
Гм, ну привык уже как-то ставить Apache + PHP + MySQL по отдельности. Как-то поставил какую-то сборку (не денвер) - там проблема с кодировкой в MySQL была, СУБД вообще не запускалась, починить не удалось.
|
Сообщ.
#6
,
|
|
|
Господа, нарыл на Apache Lounge билд Apache в VC10 ажно, там было сказано, что PHP в VC9 он тоже будет нормально грузить. PHP обновил до 5.4. В phpinfo() это видно, как и timezone Europe/Moscow. Но вызов echo date("H:i:s"); по-прежнему печатает по зимнему времени, то есть, на час больше!
Добавлено Это уж злобно, билд-то PHP-февральский! Добавлено Гм, странно, после перезагрузки системы стал модуль PHP валиться. Наверно, надо все-таки апач в VC9 поставить... Добавлено Поставил бинарники Apache VC9 - просто переписал все файлы в папках bin и modules - сайты на локалхосте заработали намана. Ну теперь буду думать, как дальше траблу со временем решать, раз портирование на самую свежую версию PHP не помогло. |
Сообщ.
#7
,
|
|
|
а date('r T') ?
|
Сообщ.
#8
,
|
|
|
Гм, все равно вдруг снова сайт на локалхосте начал валиться...
Добавлено Цитата negram @ а date('r T') ? Дает тоже на час больше, +4 MSK |
Сообщ.
#9
,
|
|
|
Цитата Homez @ Так мы сейчас по этому времени и живем, разве нет? Дает тоже на час больше, +4 MSK |
Сообщ.
#10
,
|
|
|
Да вроде нет, перехода же на зимнее время больше нет.
|
Сообщ.
#11
,
|
|
|
Цитата Homez @ Нету, только отменили переходы именно в тот момент, когда мы находились на зимнем времени Да вроде нет, перехода же на зимнее время больше нет. Добавлено Или наоборот, отменили переход на летнее время, а не зимнее, я забыл, но усвоил, что теперь мы живем по +4 (а не +3 как раньше) Это было ИМХО, потому, что я уже сам запутался... Добавлено Вот у тебя сейчас сколько времени? Ты ведь по Московскому живешь? У меня 14:40 (округлил) и при этом труба мне говорит, что живу я по GMT + 04:00 |
Сообщ.
#12
,
|
|
|
Может, труба у тебя старее, чем переход на зимнее время отменили? Я вообще-то думал, что GMT + 4 - это на час больше, зимнее время. У меня тоже эмулятор андроид думает, что московское время - это GMT +4. В результате пришлось поставить другой часовой пояс, чтобы было +3, тогда время стало показывать в эмуляторе правильно.
Добавлено fatalist, может, Вы и правы. Но тогда получается, что это моя 7ая винда неправильно считает время? Там часовой пояс Москвы считается как GMT + 3. Получается, мне нужно поставить другой часовой пояс, где GMT + 4? Как решить-то эту проблему, чтобы больше ничего не слетело, особенно в даты, когда раньше время переводилось? P.S. Да, подсиропил нам Медведев... |
Сообщ.
#13
,
|
|
|
Откатился на PHP 5.2.17 и Apache 2.2, так как не удалось справиться с завалами модуля PHP
Добавлено Удалось нарисовать машинку на карте, но дя этого пришлось в загружаемых файлах с состоянием экипажа и координатами задать время на час больше текущего. Правильно, сервер ведь думает, что сейчас на 1 час больше. Кстати, date('r T') выдает Wed, 28 Mar 2012 17:18:46 +0400 MSD. Судя по часовому поясу, наверно и в этой версии PHP проблема со временем решена. Наверно, дело в винде, которая думает, что у меня GMT + 3. Как это решить? |
Сообщ.
#14
,
|
|
|
А в винде последние обновления стоят?
|
Сообщ.
#15
,
|
|
|
Цитата Homez @ Там наверное списки просто не поправили... у меня тоже написано +3, но я знаю, что живу по +4 и винда мне на это не указчик Наверно, дело в винде, которая думает, что у меня GMT + 3. Как это решить? |
Сообщ.
#16
,
|
|
|
Цитата negram @ А в винде последние обновления стоят? Нет. У меня пиратка. Обновиться можно? Цитата fatalist @ Там наверное списки просто не поправили... у меня тоже написано +3, но я знаю, что живу по +4 и винда мне на это не указчик Но тем не менее, время у меня в PHP и эмуляторе Android неправильное. |
Сообщ.
#17
,
|
|
|
Цитата Homez @ Нет. У меня пиратка. Обновиться можно? Если 7ка или 8ка, то без проблем |
Сообщ.
#18
,
|
|
|
Ок, попробую!
|
Сообщ.
#19
,
|
|
|
Цитата Homez @ Но тем не менее, время у меня в PHP и эмуляторе Android неправильное. Ну я не знаю... У меня сервак с ПХП 5.2 (Денвер) стоит уже сто лет (ну с прошлого года, когда комп поменял) и никаких проблем со временем... Системное время то у тебя правильное? Они же все его не спотолка берут? В системе отключен автоматический переход на летнее время? |
Сообщ.
#20
,
|
|
|
Если 7ка с патчами - там пофикшен автоматический переход для Руси
|
Сообщ.
#21
,
|
|
|
Если что, времени MSD больше не существует. Теперь есть только MSK (UTC+4)
http://www.timeanddate.com/library/abbrevi...nes/eu/msd.html http://www.timeanddate.com/library/abbrevi...nes/eu/msk.html |
Сообщ.
#22
,
|
|
|
Цитата fatalist @ Системное время то у тебя правильное? Они же все его не спотолка берут? В системе отключен автоматический переход на летнее время? Системное время вот сейчас, когда пишу - 17:54. Переход с летнего на зимнее и обратно отключен. Добавлено Гм, попробовал обновить время с сервера синхронизации времени. В итоге у меня поставилось время на час раньше. Поставил галочку для автоматического перехода на летнее/зимнее время, повторно получил время с сервера. Поставилось правильное время. Удивительно. Запустил тот скрипт, в котором текущее время получал. Там вернулось правильное время! На загрузке данных по машинке еще не проверял, сейчас некогда, проверю попозже, но надеюсь, что все будет ок! |
Сообщ.
#23
,
|
|
|
Цитата Homez @ Гм, попробовал обновить время с сервера синхронизации времени. В итоге у меня поставилось время на час раньше. Поставил галочку для автоматического перехода на летнее/зимнее время, повторно получил время с сервера. Поставилось правильное время. Удивительно. Ничего удивительного... Еще раз объясняю: мы живем по GMT +4, а у тебя стоит GMT +3 и просто вручную сдвинуто время на час назад... Поставь уже GMT +4 и обнови с сервера - это и будет правильное время... |
Сообщ.
#24
,
|
|
|
но факт, что там выбора GMT+4 и нет.
Добавлено ну то есть, это уже как бы и не Москва будет |
Сообщ.
#25
,
|
|
|
Цитата Homez @ ну то есть, это уже как бы и не Москва будет То, что у тебя в винде написано Москва/не Москва в списке выбора никак не вляет ни на всемирное время, ни на московкое! |
Сообщ.
#26
,
|
|
|
Цитата fatalist @ То, что у тебя в винде написано Москва/не Москва в списке выбора никак не вляет ни на всемирное время, ни на московкое! Не совсем понял. Ты предлагаешь поставить GMT+4, выбрав другой город? Так как для Москвы там стоит GMT+3. Добавлено И галочка переход на летнее/зимнее время должна быть снята? P.S.Возможности обновить винду пока нет, так как у меня запущена долгоиграющая задачка, которую не хочу прерывать, а после обновления же наверняка запросится перезагрузка. Как только задачка доделается, попробую обновиться. |
Сообщ.
#27
,
|
|
|
Цитата Homez @ Не совсем понял. Ты предлагаешь поставить GMT+4, выбрав другой город? А что это еще может означать? Цитата Homez @ Если учесть, что мы никуда не переходим уже, ответ очевиден И галочка переход на летнее/зимнее время должна быть снята? |