“date(): It is not safe to rely on the system's timezone settings…”
当我请求在服务器上将PHP版本从5.2.17更新到PHP 5.3.21时,我收到此错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <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> 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 <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> |
您可能需要将时区放在
1 2 3 4 |
如果没有,请添加它(由您的时区替换)。配置完成后,请确保重新启动httpd(
以下是支持的时区列表。
如果您无法修改php.ini配置,您也可以在代码的开头使用以下代码段:
1 |
时区列表可在http://www.php.net/manual/en/timezones.php找到。
在
我建议你在
1 2 3 4 |
1 |
代替
1 |
为我工作(显示当前年份,不再显示错误消息)。
(感谢克里斯上面)
如果这些不是您的选择
-
修改
php.ini 。 -
添加
date_default_timezone 电话。
而不是
当我需要一年的版权信息时,我使用了
如果您正在使用CodeIgniter并且无法更改php.ini,我将以下内容添加到index.php的开头:
1 |
我始终将此行保留在codeigniter的root
1 |
此处支持的时区列表
@Justis向我指出了正确的方向,但他的代码对我不起作用。这样做:
1 2 3 4 5 | // 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
此解决方案不仅适用于没有完整系统访问权限的用户。除了您之外,任何脚本都必须提供给任何其他人。当您将脚本分发给其他人时,您永远不知道脚本将在什么服务器上运行。
我不得不用双引号。
1 |
这个问题一直困扰着我,因为我试图将"createbucket.php"脚本注入作曲家,并且我一直被告知我的时区不正确。
最后解决问题的唯一方法是:
搜索时区
1 2 3 4 |
确保删除
然后最后
1 | $ sudo service httpd restart |
你会很高兴去:)
除了在几个答案中提到的date.timezone =之外,
我在php.ini文件中发现了一个错误,导致它无法访问date.timezone。
我发现它的方式是从终端的命令行运行php。
这导致在第114行报告错误。在我的情况下,我已取消注释显示错误的设置'|'两个值之间。它不喜欢它。
我删除了其中一个值和|之后一切都很好
您可以在
1 | php_value date.timezone UTC |
1 |
对于PHP(或您的位置)。
两个时区的简单方法。
1 2 3 4 5 6 7 8 9 | <?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 ?> |
如果您无权访问文件
1 2 3 4 5 6 7 8 9 10 11 |
我在us-west-2(俄勒冈州)地区托管我的EC2和S3桶。当我调用
我做了以下更改以使其工作。分享这些细节,以防有人面临类似的问题,上述任何答案都没有帮助。
在此之后,我能够成功列出存储桶,没有任何异常。希望这可以帮助。
如果您使用Plesk,请尝试它,首先,打开PHP设置,在页面底部,将date.timezone从DEFAULT更改为UTC。
我在chroot监狱中运行php-fpm时遇到此错误。我尝试在chroot目录中创建etc / php.ini和/ usr / share / zoneinfo,但它只是不起作用。我甚至尝试过扫描php-fpm守护进程来查看他们丢失的文件 - 没有任何内容跳出来。
因此,如果Google将您带到这里,因为您在使用为chroot配置的php-fpm时遇到此错误,您可以通过将此行添加到ENV部分中的
1 | env[TZ] = America/New_York |
通常需要php-fpm restart才能生效。希望这有助于那里的人。
在纠正不兼容性的同时,快速解决方案是禁用
将下面的行插入
1 2 | error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING ); |
在我的特定情况下,我将PHP配置为使用PHP-FPM(FastCGI Process Manager)。从CLI执行
1 | service rh-php56-php-fpm restart |
如果您编辑了
1 | service httpd restart |
从CtrlX上面得到的答案是正确的答案,但它可能无法完全发挥作用。
我在php.ini文件中添加了这一行:
1 |
但它并没有删除所有文件的PHP错误,因为我的一些PHP脚本都在子文件夹中。所以我必须编辑.htaccess文件来设置php.ini以递归方式使用(在子文件夹中):
1 | suphp_configpath /home/account_name/public_html |
其中account_name是您的cpanel帐户名,public_html是您的php.ini文件所在的文件夹。
对于docker用户:
在项目中创建一个本地timezone.ini文件,在docker-compose.yml中设置配置,
1 2 | volumes: -"./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini" |
timezone.ini
1 |
这是一个简单的解决方案,谁不知道时区。