“date():依靠系统的时区设置是不安全的…”

当我要求在服务器上将PHP版本从5.2.17更新到PHP 5.3.21时,我得到了这个错误。

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> <h4>A PHP Error was encountered</h4> <p>Severity: Warning</p> <p>Message: date(): 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/New_York' for 'EDT/-4.0/DST' instead</p> <p>Filename: libraries/Log.php</p> <p>Line Number: 86</p> </div> Warning: date(): 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/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 86 Warning: date(): 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/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 99 <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> <h4>A PHP Error was encountered</h4> <p>Severity: Warning</p> <p>Message: date(): 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/New_York' for 'EDT/-4.0/DST' instead</p> <p>Filename: libraries/Log.php</p> <p>Line Number: 99</p> </div> 

您可能需要将时区放在php.ini文件的configuration行中。 你应该在你的php.ini文件中有这样一个块:

 [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = America/New_York 

如果没有,请添加它(以您的时区replace时区)。 configuration完成后,请确保重新启动httpd( service httpd restart )。

以下是支持的时区列表 。

如果你不能修改你的php.iniconfiguration,那么你可以在代码的开头使用下面的代码片段:

 date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want 

时区的列表可以在http://www.php.net/manual/en/timezones.phpfind。;

index.php文件中添加以下内容。 当我将我的应用程序从XAMPP服务器移动到Apache 2.2和PHP 5.4时,我首先遇到了这个问题。

我build议你在你的index.php文件而不是php.ini文件中做。

 if( ! ini_get('date.timezone') ) { date_default_timezone_set('GMT'); } 

如果这些不是你的select

  • 修改php.ini
  • 添加date_default_timezone调用。

而不是date你可以使用gmdate

当我需要一年版权小窍门时,我使用了gmdate( "Y" )

 <? print(gmdate("Y")); ?> 

代替

 <? print(date("Y")); ?> 

为我工作(显示当年,没有更多显示错误信息)。 (感谢上面的克里斯)

@Justis指出我正确的方向,但他的代码不适合我。 这样做:

 // set the default timezone if not set at php.ini if (!date_default_timezone_get('date.timezone')) { // insert here the default timezone date_default_timezone_set('America/New_York'); } 

文档: http : //www.php.net/manual/en/function.date-default-timezone-get.php

这个解决scheme不仅适用于没有完整系统访问权限的用户。 当你把任何脚本提供给其他任何人时,这是必要的。 当您将脚本分发给其他人时,您不知道脚本将运行在哪个服务器上。

如果您使用的是codeigniter,并且不能更改php.ini,我将以下内容添加到index.php的开头

date_default_timezone_set( 'GMT');

我总是把这一行放在codeigniter的根index.php 。这样我的代码就能在任何服务器上运行

 date_default_timezone_set('Asia/Dhaka'); 

支持的时区列表在这里

我不得不把它用双引号。

date_default_timezone_set( “美国/洛杉矶”); //默认时区

这个问题一直在困扰着我一些时间,因为我试图向composer php注入一个“createbucket.php”脚本,我一直被告知我的时区不正确。

最后,解决问题的唯一方法是: $ sudo nano /etc/php.ini

search时区

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

确保您删除;

最后

 $ sudo service httpd restart 

你会很好去:)

两个时区的简单方法。

 <?php $date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); date_default_timezone_set('America/New_York'); echo date("Ymd h:iA", $date->format('U')); // 2012-07-05 10:43AM ?> 

解决不兼容问题时,快速解决scheme是禁用index.php文件中的错误报告:

将下面的行插入到index.phpdefine( '_JEXEC', 1 );

 error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING ); 

除了在几个答案中提到的设置date.timezone =之外,我在php.ini文件中发现了一个错误,使它不能进入​​date.timezone。 我发现它的方式是通过在terminal的命令行运行php。 这导致了一个错误报告在第114行。在我的情况下,我已经取消了一个显示错误的设置注释“|” 在2个值之间。 它不喜欢它。 我删除了其中一个值和| 一切都很好

我在我们西部2(俄勒冈)地区举办我的EC2和S3水桶。 当我打电话$s3client->listBuckets()列出现有的桶在我的PHP,我得到exception – "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". 我做了下面的改变,使其工作。 分享这些细节,以防有人遇到类似的问题,以上任何一种答案都没有帮助。

  1. 基于@ AWS configurationnetworking时间协议(NTP)的文档,通过运行ntpstat命令确认ntpd服务状态正常。 如果你得到错误,这个链接可以帮助你知道什么是错的。
  2. 打开/etc/php.ini文件(有些可能在不同的path基于PHP的版本安装),并发现date.timezone没有设置为任何值,它也被默认注释。 我没有评论删除';' 在此行之前将其值设置为"UTC"并保存该文件。
  3. 使用sudo service httpd restartsudo service ntpd restart命令sudo service httpd restart启动http和ntp守护程序。

在此之后,我可以毫无例外地成功列出桶。 希望这可以帮助。

如果您使用Plesk,请尝试下列操作:首先,打开PHP设置,在页面底部将date.timezone从DEFAULT更改为UTC。

在这里输入图像描述

在这里输入图像描述

我有这个错误在chroot监狱运行php-fpm。 我试图在chroot目录中创buildetc / php.ini和/ usr / share / zoneinfo,但它不起作用。 我甚至试图用php-fpm守护进程来查看他们丢失了什么文件 – 没有跳出来。

所以如果Google把你带到这里是因为你在使用为chrootconfiguration的php-fpm时出现这个错误,你可以通过将这一行添加到ENV部分的/etc/php-fpm.d/www.conf来修复它:

 env[TZ] = America/New_York 

通常需要php-fpm重启才能生效。 希望这可以帮助那里的人。

在我的具体情况下,我已经configurationPHP使用PHP-FPM(FastCGI进程pipe理器)。 当从CLI执行phpinfo()时,我看到了在php.ini中设置的正确的时区,但在浏览器中仍然不正确,导致我的代码失败。 我只需要重新启动服务器上的php-fpm服务。

 service rh-php56-php-fpm restart 

如果您编辑了php.ini您可能还需要重新启动httpd服务

 service httpd restart 

从CtrlX上面的这个答案是正确的答案,但它可能不完全工作。 我将这一行添加到我的php.ini文件中:

 date.timezone = "America/Los_Angeles" 

但它并没有删除我的所有文件的PHP错误,因为我的一些PHP脚本在子文件夹中。 所以我不得不编辑.htaccess文件来设置php.ini以recursion方式(在子文件夹中)使用:

 suphp_configpath /home/account_name/public_html 

其中account_name是您的cpanel帐户名称,public_html是您的php.ini文件所在的文件夹。