URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7918
[ Назад ]

Исходное сообщение
"PHP - проблема со временем"

Отправлено Анони , 27-Окт-14 11:37 
И так, перевели часы и вот что произошло.

test> date
Mon Oct 27 11:34:21 MSK 2014
test> date -u
Mon Oct 27 08:34:22 UTC 2014
test> php 1.php
27.10.14 12:34:26
+0400
Mon, 27 Oct 2014 12:34:26 +0400

test> cat 1.php
<?
        print date ("d.m.y H:i:s\nO\nr")."\n";
?>

test> php -v
PHP 5.4.25 (cli) (built: Mar  2 2014 04:11:24)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
test>

Временная зона в системе обновлена, но ПОХАПЕ упорно не хочет с ней работать.
Почему?


Содержание

Сообщения в этом обсуждении
"PHP - проблема со временем"
Отправлено Анони , 27-Окт-14 12:54 
да, забыл указать, что в php.ini все верно

date.timezone = "Europe/Moscow"


"PHP - проблема со временем"
Отправлено smile , 27-Окт-14 13:36 
> да, забыл указать, что в php.ini все верно
> date.timezone = "Europe/Moscow"

http://habrahabr.ru/post/240937/

Если собран с опцией --with-system-tzdata то использует системную, если нет — то нужен модуль timezonedb

pecl install timezonedb
echo "extension=timezonedb.so" > /etc/php5/conf.d/timezonedb.ini

# или, если уже было установлено
pecl upgrade timezonedb


"PHP - проблема со временем"
Отправлено Анони , 27-Окт-14 14:10 
>> да, забыл указать, что в php.ini все верно
>> date.timezone = "Europe/Moscow"
> http://habrahabr.ru/post/240937/
> Если собран с опцией --with-system-tzdata то использует системную, если нет — то
> нужен модуль timezonedb
> pecl install timezonedb
> echo "extension=timezonedb.so" > /etc/php5/conf.d/timezonedb.ini
> # или, если уже было установлено
> pecl upgrade timezonedb

О! теперь чтоб правильно шло время надо подключать стороннюю библиотеку! Шикарно!
а опции в --with-system-tzdata в конфигураторе нет


"PHP - проблема со временем"
Отправлено Andrey Mitrofanov , 27-Окт-14 14:50 
> О! теперь чтоб правильно шло время надо подключать стороннюю библиотеку! Шикарно!

"--Гиви, я ни как не пойму, ты вообще за кого - за меня или за медведя?"

+++Кто хочет делать, ищет возможности, кто не хочет — ищет причину.

> а опции в --with-system-tzdata в конфигураторе нет


"PHP - проблема со временем"
Отправлено PavelR , 27-Окт-14 16:34 
>[оверквотинг удален]
>>> date.timezone = "Europe/Moscow"
>> http://habrahabr.ru/post/240937/
>> Если собран с опцией --with-system-tzdata то использует системную, если нет — то
>> нужен модуль timezonedb
>> pecl install timezonedb
>> echo "extension=timezonedb.so" > /etc/php5/conf.d/timezonedb.ini
>> # или, если уже было установлено
>> pecl upgrade timezonedb
> О! теперь чтоб правильно шло время надо подключать стороннюю библиотеку! Шикарно!
> а опции в --with-system-tzdata в конфигураторе нет

Ты еще в mysql не делал set time_zone = 'Europe/Moscow'
Попробуй, порадуйся.


"PHP - проблема со временем"
Отправлено Andrey Mitrofanov , 27-Окт-14 14:47 
>> да, забыл указать, что в php.ini все верно
>> date.timezone = "Europe/Moscow"
> http://habrahabr.ru/post/240937/
> Если собран с опцией --with-system-tzdata то использует системную, если нет — то
> нужен модуль timezonedb

А чтоб собирать "с опцией", надо пропатчить патчем, например (опиригального апстрима не искал),
php-5.3.1-systzdata-v10.patch
  в
php54-php-5.4.34-1.remi.src.rpm
  в
http://rpms.famillecollet.com/SRPMS/?C=M;O=D
  , а он

"""Add support for use of the system timezone database, rather than embedding a copy.  Discussed upstream but was not desired.


"PHP - проблема со временем"
Отправлено Andrey Mitrofanov , 27-Окт-14 14:25 
>[оверквотинг удален]
> test> php 1.php
> 27.10.14 12:34:26
> +0400
> Mon, 27 Oct 2014 12:34:26 +0400
> test> cat 1.php
> <?
>         print date ("d.m.y H:i:s\nO\nr")."\n";
> ?>
> test> php -v
> PHP 5.4.25 (cli) (built: Mar  2 2014 04:11:24)

5.4.34 же на дворе! Обновите пакеты - патчи безопасности *и* новые tzdata приедут, если повезёт.

> Copyright (c) 1997-2014 The PHP Group
> Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
> test>
> Временная зона в системе обновлена, но ПОХАПЕ упорно не хочет с ней
> работать.
> Почему?

http://stackoverflow.com/questions/3564478/how-to-update-tim...

PHP носит с собой копию tzdata (как PostgreSQL в неправильной сборке http://www.opennet.me/openforum/vsluhforumID3/99593.html#11 , как java, как ...).

Я порешал (на неподдерживаемом SLES10, :/да & бросив пересборку .src.rpm почти сразу), найдя и поставив новый php5-timezonedb под "свой" пакет php.

Проверка:

$ php -r '$p=new DateTime("12:00 01 Oct"); print $p->format("c")."\n"; $p=new DateTime("12:00 01 Nov"); print $p->format("c")."\n";'
2014-10-01T12:00:00+04:00
2014-11-01T12:00:00+03:00

...правильно - +04 и +03, неправильно - +04 и +04.

---С раздельными .ini для cli / apache и установкой date.timezone= оставляю читателю разбираться самостоятельно, если таковая необходимость случится.