php / php/php-src

Using `SessionHandler` doesn't always close session file

Đang mở
#16,027 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Bug Extension: session Status: Verified
Ngôn ngữ chính
C
Star
40.4k
Fork
8.2k
Merge trung bình
2 ngày 13 giờ
Pull request đã merge (30 ngày)
96

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng việc tái hiện và kiểm thử tại commit 88f32f48e2b6e7fd3554aef8d255f88d02a4e8db, sau đó lần theo ps_close_user và callback SessionHandler::close() trong phần triển khai session. Thực hiện trường hợp này dưới FPM hoặc CLI server. Hoàn tất khi yêu cầu serialization bị lỗi không còn để tệp session ở trạng thái bị khóa và kiểm thử hồi quy chạy đạt.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
c, php
Lĩnh vực
backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.