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>
600664 次浏览

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

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

如果没有,添加它(用您的时区替换)。配置完成后,确保重新启动httpd (service httpd restart)。

这里是支持的时区列表

如果你不能修改你的php.ini配置,你也可以在你的代码开头使用下面的代码片段:

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

时区列表可以在http://www.php.net/manual/en/timezones.php找到。

如果这些都不是你的选择

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

你可以用gmdate代替date

当我需要一年的版权片段时,我使用了gmdate( "Y" )

index.php文件中添加以下内容。我第一次遇到这个问题时,我把我的应用程序从我的XAMPP服务器移动到Apache 2.2和PHP 5.4…

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

if( ! ini_get('date.timezone') )
{
date_default_timezone_set('GMT');
}
<? print(gmdate("Y")); ?>

而不是

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

为我工作(显示当前年份,不再显示错误消息)。 (感谢上面的Chris)

@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

此解决方案不仅适用于那些没有完全系统访问权限的人。当您将脚本提供给除您之外的任何人时,它对于任何脚本都是必要的。当您将脚本分发给其他人时,您永远不知道该脚本将在哪个服务器上运行。

我必须把它放在双引号里。

date_default_timezone_set("America/Los_Angeles"); // default time zone

当你纠正不兼容时,一个快速的解决方案是禁用index.php文件中的错误报告:

将下面的行插入到define( ‘_JEXEC’, 1 );下面的index . php

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

我总是将这一行保存在codeigniter的根index.php中。这样我的代码可以在任何服务器上工作

date_default_timezone_set('Asia/Dhaka');

此处支持的时区列表

除了设置日期。Timezone =正如在几个答案中提到的, 我在php.ini文件中发现了一个错误,它阻止它到达date.timezone。 我找到它的方法是在终端的命令行中运行php。 这导致在第114行报告一个错误。在我的例子中,我取消了显示两个值之间有“|”的错误的设置。它不喜欢这样。 我删除了其中一个值和|,之后一切都很好

一个简单的方法,两个时区。

<?php
$date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris'));


date_default_timezone_set('America/New_York');


echo date("Y-m-d h:iA", $date->format('U'));


// 2012-07-05 10:43AM
?>

如果你正在使用CodeIgniter并且不能更改php.ini,我在index.php的开头添加了以下内容:

date_default_timezone_set('GMT');

这个问题一直困扰我一段时间,因为我试图注入一个“createbucket.php”脚本到作曲家,我一直被告知我的时区是不正确的。

最后,唯一解决这个问题的是: $ sudo nano /etc/php.ini < / p >

搜索时区

[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

然后你就可以出发了:)

我在us-west-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 配置NTP,通过ntpstat命令确认ntpd服务状态正常。如果出现错误,这个链接可以帮助您了解哪里出了问题。
  2. 打开/etc/php.ini文件(根据安装的php版本,有些文件可能在不同的路径中),发现date.timezone没有设置为任何值,并且默认情况下它是注释的。我通过删除这行之前的';'来取消注释,并将其值设置为"UTC"并保存文件。
  3. 使用sudo service httpd restartsudo service ntpd restart命令重新启动http和ntp守护进程。

在此之后,我能够成功地列出桶没有任何例外。希望这能有所帮助。

如果你使用Plesk,试试它,首先,打开PHP设置,在页面底部,更改日期。从DEFAULT到UTC的时区。

enter image description here

enter image description here

我有这个错误运行php-fpm在chroot监狱。我试着在chroot目录中创建etc/php.ini和/usr/share/zoneinfo,但它就是不工作。我甚至试着整理php-fpm守护进程,看看它们丢失了什么文件——什么都没有跳出来。

因此,如果谷歌把你带到这里,因为你在使用为chroot配置的php-fpm时得到了这个错误,你可能可以通过在ENV部分中添加这一行到/etc/php-fpm.d/www.conf来修复它:

env[TZ] = America/New_York

通常需要重新启动php-fpm才能生效。希望这能帮助到一些人。

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

service rh-php56-php-fpm restart

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

service httpd restart

上面来自CtrlX这个答案是正确答案,但它可能不完全有效。 我在php . ini文件中添加了这一行:

date.timezone = "America/Los_Angeles"

但它没有删除所有文件的PHP错误,因为我的一些PHP脚本在子文件夹中。所以我必须编辑. htaccess文件来设置php.ini以递归地使用(在子文件夹中):

suphp_configpath /home/account_name/public_html

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

你可以在你的.htaccess文件中设置时区

php_value date.timezone UTC

docker用户: 在你的项目中创建一个本地timezone.ini文件,在docker-compose中设置配置。yml, < / p >

    volumes:
- "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"

timezone.ini

    date.timezone=Australia/Sydney
<? date_default_timezone_set('Europe/Istanbul'); ?>

对于php(或您的位置)。

如果你不能访问文件php.ini,在你的域或子的根目录下创建或编辑一个.htaccess文件,并添加这个(由cpanel生成):

<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>


<IfModule php5_module>
php_value date.timezone "America/New_York"
</IfModule>


<IfModule lsapi_module>
php_value date.timezone "America/New_York"
</IfModule>

解决这个问题有两种方法

首先,在php.ini文件中输入默认时区

date.timezone = "America/New_York"

一旦你在php . ini中设置了时区,重新启动服务器

其次,改变运行时间 根据您的需要分配时区

date_default_timezone_set('America/New_York');

在你的连接页面中,根据你当前的位置放置一个类似date_default_timezone_set("Africa/Johannesburg");的代码。

我已经在.htaccess文件中创建了这个:

php_value date.timezone Asia/Jakarta

但是它不起作用。 然后我尝试将php版本从5升级到7。