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

Posted

技术标签:

【中文标题】PHP配置:依赖系统的时区设置是不安全的[重复]【英文标题】:PHP Configuration: It is not safe to rely on the system's timezone settings [duplicate] 【发布时间】:2011-01-13 21:23:29 【问题描述】:

这是一个奇怪的。 我刚刚升级到 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

仍然收到警告。

有什么建议吗?

感谢您抽出宝贵时间。

【问题讨论】:

您是否在编辑正确的ini文件? 我发现这是时区设置在 apache php.ini 而不是 cli php.ini 的问题。 时区必须是真实的,UTC 或 GMT 不起作用。 我解决了删除文件 php.ini 中的注释。只需删除';'在 date.timezone 之前!! 【参考方案1】:

您是否尝试通过 func 设置时区: http://pl.php.net/manual/en/function.date-default-timezone-set.php

【讨论】:

+1!!很简单的方法.. 我在用Yii,遇到同样的问题,在yii哪里设置?【参考方案2】:

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

【讨论】:

【参考方案3】:

我最近碰巧不得不在两台笔记本电脑上设置 Apache 和 PHP。在哭泣和咬牙切齿之后,我在 phpinfo 的输出中注意到(无论出于何种原因:在 PHP 安装期间没有注意,安装程序错误)Apache 期望 php.ini 出现在它不存在的地方。

两个选择:

    把它放在 Apache 认为应该的地方或 将 Apache 指向 php.ini 的真实位置

... 并重新启动 Apache。此时应识别时区设置。

【讨论】:

【参考方案4】:

对原始问题发表评论的 Tchalvak 为我一针见血。我一直在编辑(我使用 Debian):

/etc/php5/apache2/php.ini

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

/etc/php5/cli/php.ini

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

【讨论】:

+1 天哪,你是救世主!!!!!!!!!!!!我将 CLI 文件符号链接到 apache ini 文件。不再有这种困惑! 没问题!说实话,符号链接可能是最好的计划。很高兴有帮助。 :)【参考方案5】:

你也可以试试这个

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

【讨论】:

【参考方案6】:

请修改你的 index.php 如下:

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

【讨论】:

虽然你的回答可以解决问题,但对它的工作原理做一点评论不会有坏处,并且会让 OP 更好地理解你在做什么。 在自动生成的代码中,yii 使用配置文件中给出的信息创建了应用程序。在这种情况下,在应用程序级别,我们正在设置时区。所以我们需要创建$app而不是写成 在自动生成的代码中,yii 使用配置文件中给出的信息创建了应用程序。在这种情况下,在应用程序级别,我们正在设置时区。所以我们需要创建 $app 而不是写为 Yii::createWebApplication($config)->run() 因为这不允许我们在运行之前对应用程序进行任何修改。我们想让应用知道我们的时区的改变。将来,如果您想更改任何其他参数,则可以通过在运行前修改应用程序来轻松完成。希望它能清除我想要做什么:)【参考方案7】:

显然我在这个问题上有点不合时宜,但为了下一个患者的利益:我刚刚遇到了这个问题,在我的情况下(与 OP 尝试相同但没有成功的情况相反)修复是修改php.ini,改变

date.timezone = America/New York

date.timezone = America/New_York

即加下划线。

【讨论】:

【参考方案8】:

我修改了/etc/php.ini

[日期] ;定义日期函数使用的默认时区 ; http://php.net/date.timezone date.timezone =('亚洲/加尔各答')

现在工作正常。

维宾朋友

【讨论】:

【参考方案9】:

试试这个,它对我有用。

date_default_timezone_set('America/New_York');

在抱怨的实际文件中。

【讨论】:

【参考方案10】:

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

php_value date.timezone "America/Sao_Paulo"

这对我有用。

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

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

它已经在我的 php.ini 中了。两次,实际上。我正在拔头发,因为每个人都说肯定有另一个 ini 正在加载......没有。

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

【讨论】:

以上是关于PHP配置:依赖系统的时区设置是不安全的[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP strtotime 函数 - 依赖系统的时区不安全?

Symfony2 和 date_default_timezone_get() - 依赖系统的时区设置是不安全的

如何修复与时区相关的 PHP 错误(function.strtotime 和 function.date)

如何修复来自 PHP 中 date() 的警告" [重复]

尽管时区有效,但设置默认时区不起作用

PHP 错误日志/安全配置