|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #69685 gmmktime() does not return boolean false on error
Submitted: 2015-05-21 19:16 UTC Modified: 2017-01-28 17:20 UTC
Avg. Score:3.5 ± 0.5
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: alexander dot schuch+php at dezem dot de Assigned:
Status: Re-Opened Package: Date/time related
PHP Version: 5.4.41 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: alexander dot schuch+php at dezem dot de
New email:
PHP Version: OS:


 [2015-05-21 19:16 UTC] alexander dot schuch+php at dezem dot de
From manual page:
The documentation of mktime() says for the return value "mktime() returns the Unix timestamp of the arguments given. If the arguments are invalid, the function returns FALSE (before PHP 5.1 it returned -1)."

However, gmmktime() only ever returns an integer as of documentation.

I checked the PHP source code.

mktime() and gmmktime() both use the same internal function php_mktime().

This one in all cases returns false on invalid parameters.

The only way for gmmktime()/php_mktime() to fail is in timelib_date_to_int():

However, I do not properly understand the difference between timelib_long and timelib_sll:

So, when actually can gmmktime() fail in case the arguments are correct or, does it return any errors?

Test script:


Expected result:
I wish:

- The function should return an error in case of integer overflows or underflows (proleptic Gregorian calender is assumed).

Issues, depending on classification of documentation bug or implementation bug:

- mktime() and gmmktime() should return the same "kind of data". So only integer, or integer or false.
- Documentation of return value of mktime() and gmmktime() should be the same.
- Documentation should mention that errors are/are not detected, so either the returned timestamp is "random" (single or multiple overflows) or an error is indicated.

Actual result:
Output for 5.2.6 - 5.6.9, php7@20140507 - 20150501

Output for 5.1.3 - 5.2.5

Output for 5.1.0 - 5.1.2
    Process exited with code 137.

Output for 4.4.0 - 4.4.9, 5.0.5


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2015-05-21 19:19 UTC]
-Status: Open +Status: Wont fix
 [2015-05-21 19:19 UTC]
We generally don't document on each page that invalid parameters result in false being returned: this is a normal expectation for internal functions.
 [2015-05-21 19:26 UTC] alexander dot schuch+php at dezem dot de
Why does mktime() document a possible return code of false in case of an error, while gmmktime() does not? When can mktime() fail besides invalid arguments compared to gmmktime()?

This should be documented.

The changelog documents changes in is_dst parameter in PHP 5.1. But it does not document changes in the return code. PHP 5.1.3 - 5.2.5 returns false *with valid parameters*. Later versions seem to always return an integer.

This should be documented.
 [2015-05-21 19:32 UTC] alexander dot schuch+php at dezem dot de
How can I reopen this issue? The comment given by is not related to fixing the documentation of the return code when valid and complete arguments are given.
 [2015-05-22 14:47 UTC]
-Status: Wont fix +Status: Re-Opened
 [2017-01-28 17:20 UTC]
-Package: Documentation problem +Package: Date/time related
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Mon Apr 19 00:01:24 2021 UTC