Using `SessionHandler` doesn't always close session file
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
session_set_save_handler(new \SessionHandler, true);
session_start([
'save_path' => __DIR__,
]);
$_SESSION['test'] = function () {};
If you make a request to this you'll see a fatal error due to the serialization failing, if you try and make another request the file is still locked and the request hangs waiting for the lock to be released. Removing the session_set_save_handler() is sufficient to fix the problem. From what I can tell ps_close_user is called but it never appears to make the call to SessionHandler::close().
I've managed to replicate this behaviour on FPM (ZTS and NTS) and CLI server.
I've written a test: 88f32f48e2b6e7fd3554aef8d255f88d02a4e8db
PHP Version
8.3.11 and 8.3.13-dev
Operating System
Debian/Ubuntu
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire le problème et effectuer le test sur le commit 88f32f48e2b6e7fd3554aef8d255f88d02a4e8db, puis suivez ps_close_user et le callback SessionHandler::close() dans l’implémentation de la session. Exécutez le cas avec FPM ou le CLI server. Le travail est terminé lorsque la requête de sérialisation défaillante ne laisse plus le fichier de session verrouillé et que le test de régression réussit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100