发行日期
我最近将网站移至新主机。 服务器设置非常相似。 我用简单的apache来复制新服务器上的配置。
但是,在前一台服务器上运行得很好的相同Zend框架Web应用程序在新服务器上存在此日期问题。
无论是使用其中任何一种,插入到mysql datetime列的日期都不正确。
$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中的数据类型更改为varchar,则值为2012
如果我在$ row calls,mail()的下面添加一行,给我发送date()的值,我会得到正确的时间戳。
如果我将date()值连接到另一个存储在不同列的同一行中的值,我会得到1970-01-01 00:00:01
我很难过!
有什么建议么?
编辑
从旧服务器到新服务器之间的代码没有变化。
版权所有(c)1998-2011 Zend Technologies的ionCube PHP Loader v4.0.9,版权所有(c)2002-2011,由ionCube Ltd.和Zend Guard Loader v3.3,版权所有c)1998-2010,由Zend Technologies提供
新服务器该程序使用Zend脚本语言引擎:Zend Engine v2.3.0,版权所有(c)1998-2011 Zend Technologies与ionCube PHP Loader v4.0.9,Copyright(c)2002-2011,由ionCube Ltd.,和Zend Guard Loader v3.3,版权所有(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框架在尝试插入到mysql datetime字段之前将值更改为仅仅一年。 我相信有什么会导致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;
它是32位机器吗? 32位机器在2025年之后PHP strtotime不能正常工作。 只是一个想法。
我解决了这个问题,用以下代码替换PHP date()
函数:
new Zend_Db_Expr('NOW()');
链接地址: http://www.djcxy.com/p/65073.html
上一篇: date issue