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

问题描述:

错误:可用 埃罗呐Linha:#3274 :: date_default_timezone_get():这是不是安全的依靠系统的时区设置。您需要需要才能使用date.timezone设置或date_default_timezone_set()函数。如果您使用这些方法中的任何一种,并且仍然收到此警告,则很可能是拼写错误的时区标识符。我们现在选择了“UTC”时区,但请设置date.timezone以选择您的时区。 C:\ AppServ \ www \ class \ phpmailer.class.php Erro no envio do电子邮件:SMTP连接()失败。PHPMailer的date_default_timezone_get():这是不是安全的依靠系统的时区设置

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'); 
} 

PHP没有设置默认时区。

使用PHPMailer的(或者说对时区使用的任何类),你应该在php.ini

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

设置date.timezone或通过调用date_default_timezone_set()函数YOUT代码(配置PHP之前PHPMailer的前)

date_default_timezone_set('Australia/Sydney'); 

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

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

你应该先以设置默认的时区使用date_default_timezone_set,然后使用 date_default_timezone_get检索。

date_default_timezone_set — Sets the default timezone used by all date/time functions in a script

date_default_timezone_get — Gets the default timezone used by all date/time functions in a script

一个例子是:

date_default_timezone_set('America/Los_Angeles'); 

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

什么目前你正在做的是试图请求的默认时区,为了使用它的价值为您date_default_timezone_set电话,但它从来没有将开始使用。

+0

问题中的代码不是用户代码。它是PHPMailer的一部分,但这个答案也是正确的。 – geekasylum