-
-
Notifications
You must be signed in to change notification settings - Fork 87
Incorrect session expiration time while winter/daylight saving time changes #244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I can remove the check completely. |
Ok, but it doesn't solve, that expiration should be all the time 4500 seconds, but for 15 minutes it was only 900 seconds, right? |
Another option would be to ignore the timezone configuration in PHP and compute the expiration always in UTC. Sth like $nowUtc = new DateTimeImmutable('now', new DateTimeZone('UTC'));
$expireInSeconds = $nowUtc->modify($expire)->getTimestamp() - $nowUtc->getTimestamp(); |
@JanTvrdik I don't think that timezone would have any influence in your example Edit: tývolé, vůbec jsem netušil, že je v těch relativních časech taková prasárnička, žiju celý život v iluzi 🙈 |
I think I'll fix Nette\Utils\DateTime to handle relative times more sanely. |
Version: 3.3.2
Bug Description
In DI we had set:
During last winter to daylight saving time change, we encounter this error in log
PHP User Notice: The expiration time is greater than the session expiration 900 seconds in .../vendor/nette/http/src/Http/SessionSection.php:197
.This error appears at 01:45 (30.3.2025) and the last was at 01:59. Our setting is 75 minutes = 4500 second. Minus one hour, it is 900 seconds (from the error message). The error started 75 minutes before 3:00 and ended at 2:00 when the time was changed to 3:00.
I think the problem is in the
vendor/nette/http/src/Http/Session.php
->setExpiration
method.DateTime
is handling correctly time change, buttime()
doesn't. For now, we try to fix this by settingexpiration: '4500'
that is inNette\Utils\DateTime::from()
used as numeric and is not converted via PHP DateTime.Steps To Reproduce
Not sure how to simply simulate this without changing computer date/time.
Expected Behavior
I'm expecting correct expiration time during winter/daylight saving time change.
Possible Solution
Not sure.
The text was updated successfully, but these errors were encountered: