Tại sao Debian làm sạch các phiên php với công việc định kỳ thay vì sử dụng trình thu gom rác tích hợp của php?


26

Debian và các công cụ phái sinh (Ubuntu) không sử dụng trình thu gom rác phiên php

session.gc_probability = 0

thay vào đó họ sử dụng cron /etc/cron.d/php5

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

Tại sao Debian đã chọn làm điều này?

Câu trả lời:


29

Bởi vì Debian đặt các quyền rất nghiêm ngặt trên /var/lib/php5(1733, root chủ sở hữu, root nhóm) để ngăn chặn chiếm quyền điều khiển phiên PHP. Thật không may, điều này cũng ngăn trình thu gom rác phiên PHP hoạt động, bởi vì nó không thể thấy các tệp phiên ở đó. Công việc cron chạy dưới quyền root, có đủ quyền truy cập để xem và dọn sạch các tệp phiên.

Chỉnh sửa : Tài liệu hỗ trợ: Hành vi được thiết lập để đáp ứng với lỗi # 267720 . (Trước đây từng có những bình luận trong php.initệp chứng khoán về điều này, nhưng hiện tại tôi không thấy chúng ở đó trong bản cài đặt PHP dựa trên sự khò khè của tôi.)


Perms trên / var / lib / php5 ar drwx-wx-wt (rooot-root), vì vậy người dùng apache có thể viết nội dung dir (bit dính), nhưng không thể đọc được. Vì vậy, tôi hiểu rằng trình thu gom rác của php sẽ không thể đánh giá lại thời gian của các tệp phiên để nó không thể chọn các tệp sẽ bị xóa ... tôi có đúng không?
nulll

Vâng đúng rồi.
asciiphil

5

Nó có thể đáng tin cậy hơn một chút trên các trang web có lưu lượng truy cập thấp (nếu bạn chỉ nhận được vài trăm lượt truy cập mỗi ngày và GC chỉ bắn mỗi nghìn hoặc hơn, các phiên có thể tồn tại lâu hơn so với bình thường) và tôi tưởng tượng đó có thể là một ít khắc nghiệt hơn trên máy chủ so với GC gốc nếu bạn có nhiều phiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.