Я недавно переместил сайт на новый хост.Настройка сервера очень похожа.Я использовал easy apache для дублирования конфигурации на новом сервере.
Однако у того же веб-приложения Zend Framework, которое отлично работало на предыдущем сервере, есть проблема с датой на новом сервере.
используя любой из них, дата, вставленная в столбец даты и времени mysql, неверна.
$row->creation_date = date('Y-m-d H:i:s');
$row->creation_date = date('Y-m-d H:i:s', TRUE);
Значение в столбце даты и времени равно 0000-00-00 00:00:00
Если я изменю тип данных в mysql на like varcharзначение 2012
Если я добавлю строку прямо под вызовами $ row mail (), чтобы отправить мне по электронной почте значение date (), я получу правильную отметку времени.
Если я соединю значение date () с другим значением, которое хранится в другом столбце той же строки, я получу 1970-01-01 00: 00: 01
Я в тупике!
Любые предложения?
РЕДАКТИРОВАТЬ
Никаких изменений в коде не было сделано между переходом со старого на новый сервер.
СТАРЫЙ СЕРВЕР Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies с ionCube PHP Loader v4.0.9, Copyright (c) 2002-2011, ionCube Ltd., и с Zend Guard Loaderv3.3, Copyright (c) 1998-2010, Zend Technologies
НОВЫЙ СЕРВЕР В этой программе используется Zend Scripting Language Engine: Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies сPHP-загрузчик ionCube v4.0.9, Copyright (c) 2002-2011, от ionCube Ltd. и Zend Guard Loader v3.3, Copyright (c) 1998-2010, Zend Technologies с Suhosin v0.9.32.1, Авторское право(c) 2007-2010, SektionEins GmbH
WHM 11.30.5
CENTOS 6.2 x86_64
PHP 5.3.8
MYSQL 5.0.92
Zend Framework const VERSION = '1.9.5';
Краткое описание проблемы: Хотя php date () предоставляет правильное значение даты, Zend Framework меняет значение на год до того, как попытатьсявставить в поле даты и времени mysql.Я полагаю, что что-то заставляет Zend изменить значение даты перед вставкой, но не могу найти что.
public function addComment(Core_Model_Item_Abstract $resource, Core_Model_Item_Abstract $poster, $body)
{
$table = $this->getCommentTable();
$row = $table->createRow();
if( isset($row->resource_type) )
{
$row->resource_type = $resource->getType();
}
$row->resource_id = $resource->getIdentity();
$row->poster_type = $poster->getType();
$row->poster_id = $poster->getIdentity();
$row->creation_date = date('Y-m-d H:i:s'); // this date() is throughout app
//if I put mail(send me date('Y-m-d H:i:s') I got correct time stamp)
$row->body = $body;
$row->save();
if( isset($resource->comment_count) )
{
$resource->comment_count++;
$resource->save();
}
return $row;
}
Таблица MYSQL:
CREATE TABLE `comments` (
`comment_id` int(11) unsigned NOT NULL auto_increment,
`resource_id` int(11) unsigned NOT NULL,
`poster_type` varchar(24) character set latin1 collate latin1_general_ci NOT NULL,
`poster_id` int(11) unsigned NOT NULL,
`body` text collate utf8_unicode_ci NOT NULL,
`creation_date` datetime NOT NULL,
`like_count` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`comment_id`),
KEY `resource_type` (`resource_id`),
KEY `poster_type` (`poster_type`,`poster_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;