【问题标题】:How to set date.timezone for CodeIgniter to work with php 5.3如何为 CodeIgniter 设置 date.timezone 以使用 php 5.3
【发布时间】:2011-06-20 10:43:57
【问题描述】:

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

遇到了 PHP 错误

严重性:警告

消息:main():不安全 依赖系统的时区 设置。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。 如果您使用了这些方法中的任何一种 你仍然得到这个 警告,你很可能拼错了 时区标识符。我们选择了 '-8.0/否'的'America/Los_Angeles' 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 上。

【问题讨论】:

    标签: codeigniter datetime php


    【解决方案1】:

    如果您在 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 中有支持的时区的完整列表。

    【讨论】:

    • 我也试过了。我收到与直接在 php.ini 中设置 date.timezone 相同的服务器错误消息
    • 我仍然找不到解决方案,但感谢您的帮助!我检查了日志,但没有发现任何有用的东西(或者我检查了错误的日志)。但是,我发现code igniter 并不完全支持php5。结果,我决定放弃代码点火器。无论如何,感谢您再次提供帮助。
    • 你在说什么? CodeIgniter 不支持 PHP 5?当然它是血腥的——我在 PHP 5.3 上使用了 CodeIgniter 几次,没有任何问题。您的服务器设置方式存在某种错误,您需要处理,而不仅仅是责备/丢弃 CI。
    • 我把它放在(环境特定的)config.php 中,直接跟在时区变量之后,这也可以:date_default_timezone_set($config['time_reference']);
    【解决方案2】:

    是的,如果不能直接编辑 php.ini 文件,放置...

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

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

    参考:PHP's Available Timezones

    【讨论】:

      【解决方案3】:

      写在你的 index.php 代码点火器...

      /*
      |---------------------------------------------------------------
      | TimeZone 
      |---------------------------------------------------------------
      |
      | default Time Zone
      | 
      
      */
      if ( function_exists( 'date_default_timezone_set' ) )
      date_default_timezone_set('Asia/Jakarta');
      

      在我的 codeigniter 中运行良好

      【讨论】:

        【解决方案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') ";
        

        【讨论】:

          【解决方案5】:

          date.timezone 旨在放入您的 php.ini 或 .htaccess 文件中。

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

          【讨论】:

          • 我使用的是code igniter,所以我脚本的第一行是指我的CI文件夹下的index.php?
          • @snowfish,是的...这是我发布的完全相同的解决方案:/
          • 我也面临同样的问题。我已经在 index.php 和 php.ini 中进行了所有这些更改。但仍然显示服务器时间。请帮我解决这个问题。
          • @sushil 您可能应该联系您的主机并询问为什么不允许您覆盖 PHP 中的默认时区。
          • @RobertM。我已经和他们联系过,他们说他们不对这种变化负责。我必须从编码部分进行这些更改。我有爸爸托管。
          【解决方案6】:

          编辑您的 config.php 文件 来自

              $config['time_reference'] = 'local';
          

              $config['time_reference'] = 'UTC';
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-23
            • 2019-09-20
            • 2011-10-31
            • 2016-08-14
            • 2013-12-01
            相关资源
            最近更新 更多