PHP配置:依靠系统的时区设置并不安全
这个问题在这里已有答案:
“ date():依靠系统的时区设置是不安全的……” 22个答案
这里很奇怪。我只是升级到php 5.3.0,自升级以来,我收到以下警告:
警告:getdate()[function.getdate]: 依靠系统的安全性是不安全的 时区设置。 您是必需的 使用date.timezone设置或 date_default_timezone_set() 功能。 如果您使用了 这些方法,你仍然 得到此警告,您最有可能 时区标识符拼写错误。 我们 选择了“美国/芝加哥”作为 'CST / -6.0 /无DST'
在各个论坛中浏览后,每个人都说要解决此问题,您要做的就是编辑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
仍然得到警告。
有什么建议么?
感谢您抽出宝贵的时间。
Ole Media asked 2019-10-03T13:45:50Z
12个解决方案
37 votes
查尔瓦克(Tchalvak)对最初的问题进行了评论,为我打了个头。 我一直在编辑(我使用Debian):
/etc/php5/apache2/php.ini
...对于我来说具有正确的时区,并且是其中唯一加载了date.timezone的.ini文件,但是当我通过Bash运行脚本时,我收到上述错误。 我不知道我应该进行编辑:
/etc/php5/cli/php.ini
也一样 (好吧,对我而言,这也是“好”,对您而言,当然可能有所不同,但现在我将使Apache和CLI版本的php.ini保持同步)。
Vaughany answered 2019-10-03T13:46:18Z
17 votes
您是否尝试通过func设置时区:[http://pl.php.net/manual/en/function.date-default-timezone-set.php]
cichy answered 2019-10-03T13:46:45Z
7 votes
最近,我碰巧不得不在两台笔记本电脑上安装Apache和PHP。 经过多次哭泣和咬牙切齿,我在phpinfo的输出中注意到(出于某种原因:在PHP安装过程中没有注意,安装程序不正确),Apache期望php.ini不在某个地方。
两种选择:
将其放在Apache认为应该的位置或
将Apache指向php.ini的真实位置
...并重新启动Apache。 此时应识别时区设置。
Garvin answered 2019-10-03T13:47:38Z
6 votes
打开您的.htaccess文件,将此行添加到文件中,保存,然后重试:
php_value date.timezone "America/Sao_Paulo"
这适合我。
codex answered 2019-10-03T13:48:07Z
5 votes
试试这个,对我有用。
date_default_timezone_set('America/New_York');
在实际文件中抱怨。
selangk answered 2019-10-03T13:48:38Z
2 votes
检查php.ini文件中的语法错误,尤其是在Date参数之前,以防止该文件无法正确解析。
amercader answered 2019-10-03T13:49:03Z
2 votes
请按如下所示修改index.php:
require_once($yii);
$app = Yii::createWebApplication($config);
Yii::app()->setTimeZone('UTC');
$app->run();
Ashutosh Nigam answered 2019-10-03T13:49:28Z
2 votes
显然,我在这个问题上有点过时了,但是为了下一个患者的利益:我只是遇到了这个问题,而我的情况(与OP尝试相同但没有成功的OP相反)是修复php.ini的问题。 ,变化中
date.timezone = America/New York
至
date.timezone = America/New_York
这就是添加下划线。
user1613163 answered 2019-10-03T13:50:06Z
1 votes
我修改了/etc/php.ini
[日期]; 定义日期函数使用的默认时区; [http://php.net/date.timezone]date.timezone =('亚洲/加尔各答')
现在工作正常。
维平·帕尔(Vipin Pal)
Vipin Pal answered 2019-10-03T13:50:55Z
1 votes
您可能忘记删除分号以取消注释该行。 对于date.timezone = "US/Central"行,请确保该行的前面没有分号。
SirNikkolas answered 2019-10-03T13:51:22Z
0 votes
奇怪的是,我发现可以通过将时区声明放在我的php.ini文件的顶部来修复错误。
它已经在我的php.ini中。 实际上是两次。 我正在拔头发,因为每个人都在说必须再加载另外一个ini ...没有。
希望这可以节省其他人的时间/掉头发。
Soft Bullets answered 2019-10-03T13:52:05Z
-11 votes
你也可以试试这个
date.timezone = <?php date('Y'); ?>
mahami answered 2019-10-03T13:52:31Z