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() - 依赖系统的时区设置是不安全的