На сервере временные зоны установлены корректные. В настройках php указано:
date.timezone = Europe/Moscow
php-функция time() на сайте возвращает корректное время,
на форуме (при выполнении форумного скрипта) - на 3 часа отстаёт.
Проверил - виноват вот этот код (initdata.php):
/**
* Fix for PHP 5.1.x warning
*
* Sets default time zone to server time zone
* @since 2.2.0.2006-05-19
*/
if ( function_exists( 'date_default_timezone_set' ) and !defined( 'DO_NOT_SET_TIMEZONE' ) ) // bug report 25566
{
if ( ! @date_default_timezone_get() )
{
date_default_timezone_set( @ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC' );
}
else
{
date_default_timezone_set( 'UTC' );
}
}
А именно - последняя строка кода, которая сбрасывает [date.timezone] в глобальный [uTC]:
date_default_timezone_set( 'UTC' )
Объясните на пальцах логику приведённого кода. В данном случае функция [date_default_timezone_get] возвращает зону, установленную в [date.timezone] и далее (else) сбрасывает её в [uTC]. Зачем ?
php 5.3.3
На сервере временные зоны установлены корректные. В настройках php указано:
php-функция time() на сайте возвращает корректное время,
на форуме (при выполнении форумного скрипта) - на 3 часа отстаёт.
Проверил - виноват вот этот код (initdata.php):
/** * Fix for PHP 5.1.x warning * * Sets default time zone to server time zone * @since 2.2.0.2006-05-19 */ if ( function_exists( 'date_default_timezone_set' ) and !defined( 'DO_NOT_SET_TIMEZONE' ) ) // bug report 25566 { if ( ! @date_default_timezone_get() ) { date_default_timezone_set( @ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC' ); } else { date_default_timezone_set( 'UTC' ); } }А именно - последняя строка кода, которая сбрасывает [date.timezone] в глобальный [uTC]:
date_default_timezone_set( 'UTC' )
Объясните на пальцах логику приведённого кода. В данном случае функция [date_default_timezone_get] возвращает зону, установленную в [date.timezone] и далее (else) сбрасывает её в [uTC]. Зачем ?
Изменено пользователем cyrax_02