简体   繁体   中英

Default Europe timezone set in php.ini, but date_default_timezone_get() returns 'UTC'

I've set in php.ini file the default timezone:

date.timezone = Europe/Rome

I've also restarted httpd service after the edit (service httpd restart), but when I call date_default_timezone_get() , it returns 'UTC' value.

Why this happens?

Also calling php_info() shows the timezone set in php.ini

PS. Sorry for my English.

If your code (including any frameworks) really does not change the timezone at all and you're running under a PHP version from 5.1.x to 5.3.x, it's possible, that the TZ environment variable is set somewhere in your system. Then your date.timezone setting would be ignored .

See the PHP manual page of date.timezone (emphasis mine):

The default timezone used by all date/time functions. Prior to PHP 5.4.0, this would only work if the TZ environment variable was not set . […]

To check whether or not the TZ environment variable is set in your system, you could use

if (isset($_ENV['TZ'])) {
    echo 'TZ=' . $_ENV['TZ'];
}
else {
    echo 'TZ not set';
}

or put

phpinfo();

somewhere in your code and check the "PHP Variables" section at the very bottom of its output.

I just had the same problem.

In my php.ini , the timezone was well informed:
date.timezone = Europe/Paris

I checked with the php command --ri date
and timezone in php.ini was well taken care of, so the error was not from the ini file.

The error came from the httpd.conf apache's file where is declared the variable PHPIniDir .

I had put PHPIniDir "C:\\PHP\\"

You must remove the last back-slash which gives:
PHPIniDir "C:\\PHP"

I hope this feedback will help.

(Just an precision, my environment is : Windows 7, php 5.4.32 and apache 2.2.25)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM