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

时间:2012-09-22 11:14:01

标签: symfony timezone php

任何人都可以告诉我为什么在安装了最新MAMP的全新格式化macbook中运行app / console时出现此错误?

  

警告:date_default_timezone_get():依赖系统的时区设置是不安全的。您需要*使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们在/../Logger.php第112行选择“欧洲/赫尔辛基”作为'EEST / 3.0 / DST'

我已经检查了php.ini的路径并标出了date.timezone = "Europe/Athens"

还重启了MAMP / apache几次。

10 个答案:

答案 0 :(得分:21)

OS X中的默认php.ini位于:

/private/etc/php.ini

无论如何,你可以告诉CLI php to load MAMP settings,或使用alias of MAMP command itself

答案 1 :(得分:21)

在AppKernel.php上写道:

public function init() {
    date_default_timezone_set( 'Europe/Lisbon' );
    parent::init();
}

由于init()已弃用(并将在Symfony2 3.0中删除),因此建议在构造函数中移动代码,如下例所示:

public function __construct($environment, $debug) {
    parent::__construct($environment, $debug);
    // get rid of Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone
    date_default_timezone_set( 'Europe/Paris' );
}

答案 2 :(得分:8)

您不编辑好的php.ini文件

您可以使用以下方式获取完整的phpinfo()

php -i 

并且,在那里,使用了php.ini文件:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

答案 3 :(得分:6)

我遇到了同样的问题,并且确实有一个命令行,并且在Yosemite上运行MAMP / Native Mac PHP服务,当我试图按照这个页面上的指示时,他们似乎没有为我工作。

当我运行php命令时:

$ php -i | grep 'Configuration File'<br>
Configuration File (php.ini) Path => /etc<br>
Loaded Configuration File => <em>(Blank)</em>

我意识到CLI使用的php.ini实际上是php.ini.default文件。 我创建了一个指向该文件的符号链接,如php.ini,一切正常。

My-MacPro:/ etc / $ ln -s php.ini.default php.ini

答案 4 :(得分:4)

我确实按照你的答案,但在我的情况下,没有一个工作。我决定改变一下 date_default_timezone_get()  在 logger.php 文件中。

我用我的时区设置(“欧洲/柏林”)取而代之,一切顺利!

旧学校的解决方案,但仍然是一个解决方案。

答案 5 :(得分:4)

我的SF2安装遇到了完全相同的问题。

要解决此问题,只需访问php.ini /etc/php.ini文件,然后将文件更改为此类文件(根据当地时区调整您的时区):

;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;;

[Date] 
; Defines the default timezone used by the date functions 
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone 
date.timezone = Europe/London

答案 6 :(得分:3)

Mac OSX中的默认php.in位于/etc/php.ini,与/private/etc/php.ini文件完全相同。

你应该知道你有可能使用两个并行运行的php版本。我有这个问题'因为我使用本机mac osx php,但是我不得不通过自制软件安装一个php包,然后我通过自制软件得到了另一个版本的php。虽然我已经在php.ini /etc/php.ini文件中配置了时区,但我仍遇到同样的问题,所以我跑了:

php -i | grep 'Configuration File'

为了配置正确的文件,我得到了:

Configuration File (php.ini) Path => /usr/local/etc/php/5.3
Loaded Configuration File => /usr/local/etc/php/5.3/php.ini
PHP Warning:  Unknown: It is not safe to rely on the system's 
timezone settings. You are *required* to use the date.timezone 
setting or the date_default_timezone_set() function. In case you 
used any of those methods and you are still getting this warning,
you most likely misspelled the timezone identifier. We selected 
'America/Buenos_Aires' for 'ART/-3.0/no DST' instead in Unknown on line 0

然后我知道我必须编辑/usr/local/etc/php/5.3/php.ini文件。

之后,一切顺利。我已经没有那个问题了。

我希望它可以帮助你解决这个问题。

答案 7 :(得分:1)

通常,CLI和Apache都有单独的php.ini个文件。确保您已编辑了所需的一个。

答案 8 :(得分:1)

默认情况下,Mac在控制台中使用位于以下位置的PHP:

/private/etc/php.ini

你应该使用这个,因为MAMP总是取消设置时区变量,你总会得到那个错误。

答案 9 :(得分:1)

我在OS X 10.9上遇到了类似的问题。 我的问题是php.ini中没有/etc文件。 我通过创建包含内容的php.ini文件来解决问题:

date.timezone = Europe/Athens