php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35660 AIX TZ variable format not understood, yields UTC timezone
Submitted: 2005-12-13 19:28 UTC Modified: 2005-12-20 20:55 UTC
From: Bjorn dot Wiberg at its dot uu dot se Assigned: derick
Status: Closed Package: Date/time related
PHP Version: 5.1.1 OS: IBM AIX 5.2.0.0 ML5
Private report: No CVE-ID:
 [2005-12-13 19:28 UTC] Bjorn dot Wiberg at its dot uu dot se
Description:
------------
PHP does not understand the notion of the TZ environment variable that IBM AIX uses, and defaults to the UTC time zone if an "incorrect" TZ value is encountered.

The format of the TZ variable, and the allowed values, can be found here:
http://publib.boulder.ibm.com/infocenter/pseries/index.jsp?topic=/com.ibm.aix.doc/files/aixfiles/environment.htm

If this could be considered for future releases, that would be a great relief. As many (all?) other software on the system seem to use the TZ correctly.


Otherwise, it would be great if the date.timezone setting would act as a fallback in case the TZ environment variable is considered invalid by PHP.

And, perhaps, that this is clarified in the documentation (http://se.php.net/manual/sv/function.date-default-timezone-get.php); i.e., that an incorrect TZ value directly yields a "UTC" timezone setting.

Reproduce code:
---------------
System environment configuration file /etc/environment contains:
TZ=NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00

httpd.conf contains:
php_value date.timezone "Europe/Stockholm"

PHP script that displays the reverting-to-UTC behavior of PHP:

<?php
//  putenv('TZ=NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00');

  echo 'TZ is: ' . getenv('TZ') . '<BR>';
  echo 'date.timezone is: ' . ini_get('date.timezone') . '<BR>';
  echo 'date_default_timezone_get() returns: ' . date_default_timezone_get() . '<BR>';
  echo 'Current time is: ' . strftime('%T') . '<BR>';

  echo '<BR>';

  echo 'Forcing the correct timezone (' . ini_get('date.timezone') . ')...<BR>';
  date_default_timezone_set(ini_get('date.timezone'));
  echo 'Correct current time is: ' . strftime('%T') . '<BR>';
?>


Expected result:
----------------
That the timezone is picked up and understood by PHP. This would equal the "Europe/Stockholm" timezone setting. That is:

TZ is: NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00
date.timezone is: Europe/Stockholm
date_default_timezone_get() returns: Europe/Stockholm
Current time is: 19:20:10

Forcing the correct timezone (Europe/Stockholm)...
Correct current time is: 19:20:10

Actual result:
--------------
TZ is: NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00
date.timezone is: Europe/Stockholm
date_default_timezone_get() returns: UTC
Current time is: 18:20:10

Forcing the correct timezone (Europe/Stockholm)...
Correct current time is: 19:20:10

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-12-17 18:41 UTC] derick@php.net
Just to let you know, using the date_default_timezone_set() function is preferred over using the TZ env setting as it's faster.
 [2005-12-18 10:40 UTC] Bjorn dot Wiberg at its dot uu dot se

 [2005-12-20 20:54 UTC] derick@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 [2005-12-20 20:55 UTC] derick@php.net
Fixed in the way that we check if you pass an invalid setting for the TZ string, and if you do, we fall back to the ini setting if it exists.
 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Mon Apr 21 04:01:57 2014 UTC