PHPMailer date_default_timezone_get():依赖系统的时区设置是不安全的

时间:2017-06-17 17:41:46

标签: php date datetime

错误:可用 Erro na Linha:#3274 :: date_default_timezone_get():依靠系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们现在选择了时区'UTC',但请设置date.timezone以选择您的时区。 C:\的appserv \ WWW \类\ phpmailer.class.php Erro no envio do e-mail:SMTP connect()失败。

public static function rfcDate()
{
    // Set the time zone to whatever the default is to avoid 500 errors
    // Will default to UTC if it's not set properly in php.ini
    date_default_timezone_set(@date_default_timezone_get());
    return date('D, j M Y H:i:s O');
}

2 个答案:

答案 0 :(得分:0)

您应该首先使用date_default_timezone_set来设置默认时区,然后使用它来检索它     date_default_timezone_get

  

date_default_timezone_set - 设置所有人使用的默认时区   脚本中的日期/时间函数

     

date_default_timezone_get - 获取所有人使用的默认时区   脚本中的日期/时间函数

一个例子是:

date_default_timezone_set('America/Los_Angeles');

$x= date_default_timezone_get(); // 'America/Los_Angeles'

您目前正在尝试请求默认时区,以便将其值用于date_default_timezone_set来电,但它从未设置为开始。

答案 1 :(得分:0)

PHP没有设置默认时区。

在使用PHPMailer(或任何使用时区的类)之前,您应该通过在PHP.INI中设置date.timezone来配置PHP

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'Australia/Sydney'

或通过调用yout代码中的date_default_timezone_set()函数(在PHPMailer之前)

date_default_timezone_set('Australia/Sydney');

或在apache的配置文件中(我的首选方法)

# Timezone and other stuff for PHP
php_value date.timezone "Australia/Sydney"