当我请求在服务器上将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>
答案 0 :(得分:537)
您可能需要将时区放在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
)。
答案 1 :(得分:192)
如果您无法修改php.ini配置,您也可以在代码的开头使用以下代码段:
date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want
答案 2 :(得分:69)
在index.php
文件中添加以下内容。当我将应用程序从我的XAMPP服务器移动到Apache 2.2和PHP 5.4 ...
我建议您在index.php
文件而不是php.ini
文件中执行此操作。
if( ! ini_get('date.timezone') )
{
date_default_timezone_set('GMT');
}
答案 3 :(得分:16)
<? print(gmdate("Y")); ?>
而不是
<? print(date("Y")); ?>
为我工作(显示当前年份,不再显示错误消息)。 (感谢上面的克里斯)
答案 4 :(得分:15)
如果这些不是您的选择
php.ini
。date_default_timezone
来电。而不是date
,您可以使用gmdate
。
当我需要一年的版权信息时,我使用了gmdate( "Y" )
。
答案 5 :(得分:14)
如果您正在使用CodeIgniter并且无法更改php.ini,我将以下内容添加到index.php的开头:
date_default_timezone_set('GMT');
答案 6 :(得分:13)
我始终将此行保留在codeigniter的根index.php
内。这样我的代码可以在任何服务器上运行
date_default_timezone_set('Asia/Dhaka');
答案 7 :(得分:10)
// 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
此解决方案不仅适用于没有完整系统访问权限的用户。除了您之外,任何脚本都必须提供给任何其他人。当您将脚本分发给其他人时,您永远不知道脚本将在什么服务器上运行。
答案 8 :(得分:4)
我不得不用双引号。
date_default_timezone_set("America/Los_Angeles"); // default time zone
答案 9 :(得分:2)
除了设置date.timezone =如几个答案所述, 我在php.ini文件中发现了一个错误,导致它无法访问date.timezone。 我发现它的方式是从终端的命令行运行php。 这导致在第114行报告错误。在我的情况下,我已经取消注释了显示错误的设置,其中包含&#39; |&#39;两个值之间。它不喜欢它。 我删除了其中一个值和|那之后一切都很好
答案 10 :(得分:1)
两个时区的简单方法。
<?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
?>
答案 11 :(得分:1)
<? date_default_timezone_set('Europe/Istanbul'); ?>
对于php(或您的位置)。
答案 12 :(得分:1)
您可以在.htaccess
文件中设置时区
php_value date.timezone UTC
答案 13 :(得分:0)
我已经在 .htaccess 文件中完成或创建了这个:
php_value date.timezone Asia/Jakarta
但它不起作用。 然后我尝试将php版本从5升级到7,问题解决了。
答案 14 :(得分:0)
有两个解决方法
首先,更改为php.ini文件,并设置默认时区
date.timezone = "America/New_York"
一旦您在 php.ini 重新启动服务器中设置了时区
其次,更改运行时间 根据您的需要分配时区
date_default_timezone_set('America/New_York');
答案 15 :(得分:0)
如果您无权访问文件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>
答案 16 :(得分:0)
date_default_timezone_set(date_default_timezone_get());
对于不知道时区的人来说,这是一个简单的解决方案。
答案 17 :(得分:0)
对于docker用户: 在项目中创建一个本地timezone.ini文件,在docker-compose.yml中设置配置,
volumes:
- "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"
timezone.ini
date.timezone=Australia/Sydney
答案 18 :(得分:0)
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文件所在的文件夹。
答案 19 :(得分:0)
在我的特定情况下,我将PHP配置为使用PHP-FPM(FastCGI Process Manager)。从CLI执行phpinfo()
时,我看到了我在php.ini中设置的正确时区,但是在浏览器中它仍然不正确并导致我的代码失败。我只需要重新启动服务器上的php-fpm
服务。
service rh-php56-php-fpm restart
如果您修改了httpd
php.ini
服务
service httpd restart
答案 20 :(得分:0)
我在chroot jail中运行php-fpm时遇到此错误。我尝试在chroot目录中创建etc / php.ini和/ usr / share / zoneinfo,但它没有用。我甚至尝试过扫描php-fpm守护进程来查看他们丢失的文件 - 没有跳出来。
因此,如果Google将您带到这里,因为在使用为chroot配置的php-fpm时出现此错误,您可以通过在ENV部分中将此行添加到/etc/php-fpm.d/www.conf
来修复它:
env[TZ] = America/New_York
通常需要php-fpm restart才能生效。希望这有助于那里的人。
答案 21 :(得分:0)
答案 22 :(得分:0)
我在us-west-2(俄勒冈州)地区托管我的EC2和S3存储桶。当我在调用$s3client->listBuckets()
列出我的php中的现有存储桶时,我遇到异常 - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...".
我做了以下更改以使其工作。如果某人面临类似问题并且上述任何答案都没有帮助,请分享这些详细信息。
ntpstat
命令确认ntpd服务状态正常。如果您收到错误,此链接可帮助您了解出现了什么问题。date.timezone
未设置为任何值,默认情况下也进行了注释。我没有评论删除&#39 ;;&#39;在此行之前,将其值设置为"UTC"
并保存文件。sudo service httpd restart
和sudo service ntpd restart
命令重新启动http和ntp守护程序。在此之后,我能够成功列出存储桶,没有任何异常。希望这会有所帮助。
答案 23 :(得分:0)
在纠正不兼容性的同时快速解决方案是禁用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 );
答案 24 :(得分:-1)
在您的连接页面中,根据您当前的位置输入类似people.csv
的代码。