|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-09-02 03:06 UTC] mike@php.net
[2009-09-03 09:48 UTC] michal dot kocarek at brainbox dot cz
[2009-09-03 09:50 UTC] michal dot kocarek at brainbox dot cz
[2009-12-30 10:06 UTC] mike@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 14:00:01 2025 UTC |
Description: ------------ http_date() has strange behavior when receives some numbers: no argument: OK: actual time NULL: ERR: same as when 0 is passed (should be same as when no argument is passed) -∞ ? -2: ERR: invalid date (should be date before 1970) or program crash at big numbers (should fail gracefully) -1: ERR: actual time (should be 1970 - 1 sec.) 0 ? PHP_INT_MAX: OK PHP_INT_MAX ? +∞: ERR: program crash I can create a PHP testcase for it if interested. Reproduce code: --------------- <? function eh($num) { echo '> '.gettype($num).' '.$num.': '; echo http_date($num)."\r\n"; } eh(1000); eh(2); eh(1); eh(0); eh(-1); eh(-2); echo "today:\r\n"; eh(null); eh(time()); echo '> without argument: '.http_date()."\r\n"; // Test for no argument echo "PHP_INT_MAX:\r\n"; eh(PHP_INT_MAX); eh(PHP_INT_MAX+1); /* CRASH HERE */ echo "negative time():\r\n"; eh(-time()); /* CRASH HERE */ ?> Expected result: ---------------- > integer 1000: Thu, 01 Jan 1970 00:16:40 GMT > integer 2: Thu, 01 Jan 1970 00:00:02 GMT > integer 1: Thu, 01 Jan 1970 00:00:01 GMT > integer 0: Thu, 01 Jan 1970 00:00:00 GMT > integer -1: Mon, 31 Aug 2009 13:22:15 GMT > integer -2: Thu, 01 Jan 1970 00:00:-2 GMT today: > NULL : Thu, 01 Jan 1970 00:00:00 GMT > integer 1251724935: Mon, 31 Aug 2009 13:22:15 GMT > without argument: Mon, 31 Aug 2009 13:22:15 GMT PHP_INT_MAX: > integer 2147483647: Tue, 19 Jan 2038 03:14:07 GMT > double 2147483648: ***CRASH HERE*** negative time(): > integer -1251724940: ***CRASH HERE*** Actual result: -------------- > integer 1000: Thu, 01 Jan 1970 00:16:40 GMT > integer 2: Thu, 01 Jan 1970 00:00:02 GMT > integer 1: Thu, 01 Jan 1970 00:00:01 GMT > integer 0: Thu, 01 Jan 1970 00:00:00 GMT > integer -1: Wed, 31 Dec 1969 23:59:59 GMT > integer -2: Wed, 31 Dec 1969 23:59:58 GMT today: > NULL : (TODAY?s DATETIME) > integer 1251724935: Mon, 31 Aug 2009 13:22:15 GMT > without argument: (TODAY?s DATETIME) PHP_INT_MAX: > integer 2147483647: Tue, 19 Jan 2038 03:14:07 GMT > double 2147483648: ***CRASH HERE*** negative time(): > integer -1251724940: ***CRASH HERE***