发行日期

我最近将网站移至新主机。 服务器设置非常相似。 我用简单的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

下一篇: Netbeans PHP Project Apache Setup