PHP配置:依赖系统的时区设置是不安全的

时间:2010-02-06 15:31:54

标签: php timezone

这里有一个奇怪的。 我只是升级到php 5.3.0,自升级以来我收到以下警告:

  

警告:getdate()[function.getdate]:   依赖系统是不安全的   时区设置。您必需   使用date.timezone设置或   date_default_timezone_set()   功能。如果您使用过任何一个   那些方法,你还在   得到这个警告,你很可能   拼写错误的时区标识符。我们   选择“美国/芝加哥”为   'CST / -6.0 /无夏令时'

在查看各种论坛之后,每个人都说要解决问题,所有你需要做的就是在php.ini中编辑日期区域并重启Apache。

它对我不起作用。

我试过

date.timezone="America/New_York"

date.timezone=America/New_York

date.timezone="US/Central"

我做了更改后重新启动了apache。

由于我仍然使用旧版本的php安装,我甚至确保我正在编辑当前版本的php在加载时使用的php.ini

/usr/local/php5/lib/php.ini

仍然收到警告。

有什么建议吗?

感谢您抽出宝贵时间。

12 个答案:

答案 0 :(得分:37)

Tchalvak对原始问题发表了评论,对我来说是头疼的。我一直在编辑(我使用Debian):

/etc/php5/apache2/php.ini

...我有正确的时区,是唯一一个在其中加载date.timezone的.ini文件,但是当我通过Bash运行脚本时,我收到了上述错误。我不知道我应该编辑:

/etc/php5/cli/php.ini

也是。 (好吧,对我来说它也是'同样',对你来说当然可能会有所不同,但我现在要保持我的Apache和CLI版本的php.ini同步。)

答案 1 :(得分:17)

答案 2 :(得分:7)

我碰巧要设置Apache& PHP最近在两台笔记本电脑上。经过多次哭泣和咬牙切齿之后,我注意到在phpinfo的输出中(无论出于何种原因:在PHP安装过程中不注意,安装程序不好)Apache希望php.ini能够在某些地方不在。

两种选择:

  1. 把它放在Apache认为应该是的地方或
  2. 将Apache指向php.ini的真实位置
  3. ...然后重启Apache。此时应识别时区设置。

答案 3 :(得分:6)

打开.htaccess文件,将此行添加到文件中,保存,然后重试:

php_value date.timezone "America/Sao_Paulo"

这适合我。

答案 4 :(得分:5)

试试这个,它适合我。

date_default_timezone_set('America/New_York');

在抱怨的实际文件中。

答案 5 :(得分:2)

检查php.ini文件中的语法错误,特别是之前日期参数,以防止文件被正确解析。

答案 6 :(得分:2)

请修改index.php,如下所示:

require_once($yii);
$app = Yii::createWebApplication($config);
Yii::app()->setTimeZone('UTC');
$app->run();

答案 7 :(得分:2)

显然我在这个问题上有点不合时宜,但是为了下一个受害者的利益:我只是遇到了这个问题而且在我的情况下(与那些试图同样没有成功的OP形成鲜明对比)修复就是要修改 php.ini ,正在改变

date.timezone = America/New York

date.timezone = America/New_York

这是添加下划线。

答案 8 :(得分:1)

我修改了/etc/php.ini

[日期] ;定义日期函数使用的默认时区 ; http://php.net/date.timezone date.timezone =(' Asia / kolkata')

现在工作正常。

Vipin Pal

答案 9 :(得分:1)

您可能忘记删除分号以取消注释该行。对于date.timezone = "US/Central"行,请确保该行前面没有分号。

答案 10 :(得分:0)

我奇怪地发现,我可以通过将时区声明放在我的php.ini文件的顶部来修复错误。

它已经在我的php.ini中了。实际上是两次。而且我把头发拉了出来因为每个人都说必须有另一个ini被装上......没有。

希望这可以节省其他人的时间/脱发。

答案 11 :(得分:-11)

你也可以尝试这个

date.timezone = <?php date('Y'); ?>