如何为CodeIgniter设置date.timezone以使用php 5.3

时间:2011-02-03 05:23:45

标签: codeigniter datetime php

当php.ini中的date.timezone被注释掉时,它会给我:

  

遇到PHP错误

     

严重性:警告

     

消息:main():不安全   依赖系统的时区   设置。您必需才能使用   date.timezone设置或   date_default_timezone_set()函数。   如果您使用任何这些方法   而你仍然得到这个   警告,你很可能拼写错误   时区标识符。我们选择了   'America / Los_Angeles'代表'-8.0 /不   DST'而不是

     

文件名:controllers / helloworld.php

     

行号:2

当我有

date.timezone = "America/Los_Angeles"

它给了我这个:

  

服务器错误网站遇到了   检索时出错   http://localhost/ci/index.php/helloworld。   它可能是维护或   配置不正确。这里有一些   建议:重新加载此网页   后来。 HTTP错误500(内部服务器   错误):意外情况是   在服务器遇到时遇到   试图满足要求。

我使用的是php 5.3,CodeIgniter 2.0.0和Apache 2.2。

更新1: 我尝试加载没有CodeIgniter的test.php,其中test.php的前3行是

date_default_timezone_set('America/Los_Angeles');
echo date("l j \of F Y h:i:s A");

它工作正常,不同的时区也可以正常工作。 所以我怀疑问题来自CodeIgniter。

5 个答案:

答案 0 :(得分:73)

如果您使用Google搜索“CodeIgniter PHP 5.3”,您会很快发现这篇文章:)

http://philsturgeon.co.uk/blog/2009/12/CodeIgniter-on-PHP-5.3

要解决此问题,您只需编辑CodeIgniter应用程序的主index.php:

if( ! ini_get('date.timezone') )
{
   date_default_timezone_set('GMT');
} 

对于在PHP 5.3上运行的任何CodeIgniter应用程序,您可能需要进行此修改,并且可以轻松地将其修改为您当地的时区。 PHP手册here中有完整的受支持时区列表。

答案 1 :(得分:21)

是的,如果您无法直接编辑php.ini文件,请放置......

ini_set('date.timezone', 'America/New_York');

...作为CI的第一行index.php工作正常。

参考:PHP's Available Timezones

答案 2 :(得分:8)

写入index.php codeigniter ...

/*
|---------------------------------------------------------------
| TimeZone 
|---------------------------------------------------------------
|
| default Time Zone
| 

*/
if ( function_exists( 'date_default_timezone_set' ) )
date_default_timezone_set('Asia/Jakarta');

在我的codeigniter中运行良好

答案 3 :(得分:4)

这是一种简单的方法

$timezone = "Asia/Calcutta";
if(function_exists('date_default_timezone_set')) date_default_timezone_set($timezone);
//echo date('d-m-Y H:i:s');

$localtime=date('H:i:s');

$sql="INSERT INTO hits (ip,edate,curtime,page_name) VALUES ('$ip', CURDATE(),'$localtime','$filename') ";

答案 4 :(得分:3)

date.timezone旨在包含在您的php.ini或.htaccess文件中。

您可以在脚本的第一行中执行ini_set('date.timezone', 'America/Los_Angeles');并获得所需的结果。