我有一个Symfony2项目。我今天更新了我的php到5.5.7,从那以后,我得到了
Warning: date_default_timezone_get(): 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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in...
我在php.ini 中设置了默认时区
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris";
为了确保这是一个好的php.ini,我检查了
phpinfo();
我要走的路是我正在修改的:
/usr/local/php5.5.7/lib
但在那里,我看到
Default timezone UTC
这很奇怪。
知道吗?非常感谢。
也许您正试图在Apache的php.ini
中设置它,但CLI(命令行接口)php.ini
不好。
使用以下命令查找php.ini
文件:
php -i | grep php.ini
然后搜索date.timezone
并将其设置为"Europe/Amsterdam"
。所有有效时区都可以在这里找到http://php.net/manual/en/timezones.php
另一种方法(如果另一种不起作用),搜索文件AppKernel.php
,该文件应位于Symfony项目目录的文件夹app
下。在类AppKernel
:中覆盖下面的__construct
函数
<?php
class AppKernel extends Kernel
{
// Other methods and variables
// Append this init function below
public function __construct($environment, $debug)
{
date_default_timezone_set( 'Europe/Paris' );
parent::__construct($environment, $debug);
}
}
找到了类似的方法来解决这个问题(至少对我来说是这样)。
-
第一次检查
CLI php.ini
的位置:php -i | grep "php.ini"
-
在我的案例中,我最终得到了:配置文件(php.ini)路径=>/etc/
-
然后
cd ..
一直返回,cd
进入/etc
,做ls
在我的情况下php.ini没有显示,只有php.ini.default -
现在,复制名为php.ini的php.ini.default文件:
sudo cp php.ini.default php.ini
-
要进行编辑,请更改文件的权限:
sudo chmod ug+w php.ini
sudo chgrp staff php.ini
-
打开目录并编辑php.ini文件:
open .
提示:如果由于某些权限问题而无法编辑php.ini,请复制"php.ini默认值"并将其粘贴到桌面上,然后将其重命名为"php.ini",然后打开它并按照步骤7进行编辑。然后将其移动(复制+粘贴)到/etc/etc文件夹中。问题将得到解决
-
搜索[日期]并确保以下行的格式正确:
date.timezone = "Europe/Amsterdam"
我希望这能帮到你。
当前被破解接受的答案在Symfony 2.3中已弃用,并将在3.0中删除。应该将其移动到构造函数:
public function __construct($environment, $debug) {
date_default_timezone_set('Europe/Warsaw');
parent::__construct($environment, $debug);
}
由于PHP 5.5,CLI界面有一个单独的PHP.ini文件。如果您从命令行使用symfony控制台,那么将使用此特定的php.ini。
在Ubuntu 13.10检查文件:
/etc/php5/cli/php.ini
当我们在Redhat或Cent OS 上使用PHP 5.1时,问题就会出现
RHEL/COS上的PHP 5.1不支持时区功能
根据sas的答案,PHP 5.4,Symfony 2.8,我不得不使用
ini_set('date.timezone','<whatever timezone string>');
而不是CCD_ 21。我还在自定义web/config.php
的顶部添加了一个对ini_set
的调用,以使该检查成功。
将此代码添加到AppKernel类:
public function init()
{
date_default_timezone_set('Asia/Tehran');
parent::init();
}