]> granicus.if.org Git - php/commitdiff
Provide a specific error message if date.timezone value is invalid.
authorSimon Welsh <simon@simon.geek.nz>
Tue, 11 Sep 2012 09:14:51 +0000 (21:14 +1200)
committerSimon Welsh <simon@simon.geek.nz>
Tue, 11 Sep 2012 09:45:09 +0000 (21:45 +1200)
ext/date/php_date.c
ext/date/tests/date_default_timezone_get-4.phpt [new file with mode: 0644]

index 7c4e7820bb54d13fd21568e31183758819fc23d0..eac6ca505fb031e6e73c1532faeda2139814b26c 100644 (file)
@@ -862,9 +862,14 @@ static char* guess_timezone(const timelib_tzdb *tzdb TSRMLS_DC)
                }
        } else if (*DATEG(default_timezone) && timelib_timezone_id_is_valid(DATEG(default_timezone), tzdb)) {
                return DATEG(default_timezone);
+       } else if (*DATEG(default_timezone)) {
+               /* Invalid date.timezone value */
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "date.timezone value '%s' is invalid. We selected the timezone 'UTC' for now.", DATEG(default_timezone));
+       } else {
+               /* No date.timezone value */
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, DATE_TZ_ERRMSG "We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.");
        }
        /* Fallback to UTC */
-       php_error_docref(NULL TSRMLS_CC, E_WARNING, DATE_TZ_ERRMSG "We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.");
        return "UTC";
 }
 
diff --git a/ext/date/tests/date_default_timezone_get-4.phpt b/ext/date/tests/date_default_timezone_get-4.phpt
new file mode 100644 (file)
index 0000000..e76d4e3
--- /dev/null
@@ -0,0 +1,11 @@
+--TEST--
+date_default_timezone_get() function [4]
+--INI--
+date.timezone=Incorrect/Zone
+--FILE--
+<?php
+       echo date_default_timezone_get(), "\n";
+?>
+--EXPECTF--
+Warning: date_default_timezone_get(): date.timezone value 'Incorrect/Zone' is invalid. We selected the timezone 'UTC' for now. in %sdate_default_timezone_get-4.php on line %d
+UTC