当我请求在服务器上将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>

当前回答

上面来自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文件所在的文件夹。

其他回答

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

而不是

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

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

如果你不能访问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>

@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

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

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

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

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

如果这些都不是你的选择

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

你可以用gmdate代替date。

当我需要一年的时间来获得一个版权片段时,我使用gmdate(“Y”)。