Hướng dẫn is it safe to delete php session files? - có an toàn để xóa các tệp phiên php không?

Tôi thấy có hàng ngàn tệp trong thư mục "/TMP" của tôi (một máy CentOS) và hầu hết tất cả chúng là các tệp phiên PHP. Tôi lo lắng về tác động có thể có đối với hệ thống của tôi. Những tệp đó có bao giờ bị xóa bởi HĐH, Apache hoặc PHP không? Hay tôi phải tự chăm sóc nó?
I'm worried about the possible impact this might have on my system.
Are those files ever deleted either by the OS, Apache or PHP? or I have to take care of it myself?

Khi được hỏi ngày 3 tháng 5 năm 2010 lúc 23:21May 3, 2010 at 23:21

Hướng dẫn is it safe to delete php session files? - có an toàn để xóa các tệp phiên php không?

4

Chúng nên bị xóa bởi người thu gom rác PHP. Tần số được kiểm soát bởi cài đặt


3 trong php.ini. Có thể nếu điều này không đá vào bạn có vấn đề khác.

Đã trả lời ngày 3 tháng 5 năm 2010 lúc 23:35May 3, 2010 at 23:35

Jon Rhoadesjon RhoadesJon Rhoades

4.9893 Huy hiệu vàng30 Huy hiệu bạc47 Huy hiệu đồng3 gold badges30 silver badges47 bronze badges

3

Theo mặc định Debian và Ubuntu, các phiên được làm sạch bởi Cron


4

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

trong đó


5 cho tuổi thọ trong vài phút như được đặt trong

3.

Ladadadada

25,9K7 Huy hiệu vàng57 Huy hiệu bạc90 Huy hiệu Đồng7 gold badges57 silver badges90 bronze badges

Đã trả lời ngày 19 tháng 7 năm 2012 lúc 10:49Jul 19, 2012 at 10:49

1

Ngoài ra tại khởi động lại - AS /TMP luôn được xóa khi khởi động lại.

Đã trả lời ngày 7 tháng 3 năm 2012 lúc 18:00Mar 7, 2012 at 18:00

Thinicethinicethinice

4.68620 Huy hiệu bạc38 Huy hiệu Đồng20 silver badges38 bronze badges

1

Bạn có thể thiết lập một tập lệnh cron để tự động làm sạch chúng. Nói chung, một ý tưởng tốt để kiểm tra ngày sáng tạo cũ hơn so với những gì cuộc sống của cookie được thiết lập để có trên hệ thống của bạn.

Giới hạn cuộc sống cookie được thực hiện như vậy (phải được thực hiện trước khi đầu ra tập lệnh bất cứ điều gì):


Sau đó, trong tập lệnh dọn dẹp của bạn:

#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;

Sau đó, trong crontab của bạn:

# Run daily cron jobs at 03:40 every day
40 3 * * * /path/to/php-session-cleanup.sh

Đã trả lời ngày 4 tháng 5 năm 2010 lúc 15:58May 4, 2010 at 15:58

amphetamachineamphetamachineamphetamachine

8321 Huy hiệu vàng8 Huy hiệu bạc14 Huy hiệu đồng1 gold badge8 silver badges14 bronze badges

Trên trang web của tôi, tôi sử dụng các phiên PHP. Thông tin phiên được lưu trữ trong các tệp trong đường dẫn ./session của tôi. Sau một vài tháng, tôi phát hiện ra rằng các tệp phiên này không bao giờ bị xóa, bây giờ có 145.000 trong số chúng trong thư mục này.

Làm thế nào những thứ này nên được làm sạch? Tôi có phải làm theo chương trình không, hoặc có một cài đặt tôi có thể sử dụng ở đâu đó sẽ tự động dọn dẹp này không?

Chỉnh sửa quên đề cập: Trang web này chạy tại một nhà cung cấp, vì vậy tôi không có quyền truy cập vào một dòng lệnh. Tôi có FTP-Access, nhưng các tệp phiên thuộc về một người dùng khác (cái mà máy chủ web chuyển hướng chạy tôi Phải thực hiện một cái gì đó cho nó trong PHP và gọi đó theo định kỳ từ trình duyệt (có thể từ một công việc cron đang chạy trên máy của tôi ở nhà) forgot to mention: This site runs at a provider, so I don't have access to a command line. I do have ftp-access, but the session files belong to another user (the one the webserver proces runs I guess) From the first answers I got I think it's not just a setting on the server or PHP, so I guess I'll have to implement something for it in PHP, and call that periodically from a browser (maybe from a cron job running on my own machine at home)

hỏi ngày 17 tháng 3 năm 2009 lúc 13:43Mar 17, 2009 at 13:43

Kiểm traJack

9381 Huy hiệu vàng7 Huy hiệu bạc15 Huy hiệu đồng1 gold badge7 silver badges15 bronze badges

Để xử lý phiên đúng, hãy xem http://php.net/manual/en/session.configuration.php.

Ở đó bạn sẽ tìm thấy các biến này:

  • session.gc_probability
  • session.gc_divisor
  • session.gc_maxlifetime

Chúng kiểm soát xác suất chạy bộ rác (GC) khi chạy với mỗi yêu cầu trang.

Bạn có thể đặt chúng bằng ini_set () ở đầu tập lệnh hoặc tệp .htaccess của bạn để bạn chắc chắn ở một mức độ nào đó, đôi khi chúng sẽ bị xóa.

Hướng dẫn is it safe to delete php session files? - có an toàn để xóa các tệp phiên php không?

T30

10,7k6 huy hiệu vàng52 Huy hiệu bạc57 Huy hiệu đồng6 gold badges52 silver badges57 bronze badges

Đã trả lời ngày 17 tháng 3 năm 2009 lúc 14:45Mar 17, 2009 at 14:45

Hướng dẫn is it safe to delete php session files? - có an toàn để xóa các tệp phiên php không?

SebsebSeb

24.7K5 Huy hiệu vàng64 Huy hiệu bạc83 Huy hiệu Đồng5 gold badges64 silver badges83 bronze badges

4

Debian/Ubuntu xử lý việc này với một cronjob được xác định trong /etc/cron.d/php5

# /etc/cron.d/php5: crontab fragment for php5
#  This purges session files older than X, where X is defined in seconds
#  as the largest value of session.gc_maxlifetime from all your php.ini
#  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm

Tập lệnh MaxLifetime chỉ cần trả về số phút một phiên nên được giữ sống bằng cách kiểm tra php.ini, có vẻ như thế này

#!/bin/sh -e

max=1440

for ini in /etc/php5/*/php.ini; do
        cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
        [ -z "$cur" ] && cur=0
        [ "$cur" -gt "$max" ] && max=$cur
done

echo $(($max/60))

exit 0

Đã trả lời ngày 17 tháng 3 năm 2009 lúc 13:50Mar 17, 2009 at 13:50

Paul Dixonpaul DixonPaul Dixon

291K51 Huy hiệu vàng310 Huy hiệu bạc344 Huy hiệu đồng51 gold badges310 silver badges344 bronze badges

7

Trong trường hợp ai đó muốn làm điều này với một cronjob, xin lưu ý rằng điều này:

find .session/ -atime +7  -exec rm {} \;

thực sự chậm, khi có nhiều tập tin.

Thay vào đó xem xét sử dụng điều này:

find .session/ -atime +7 | xargs -r rm

Trong trường hợp bạn có khoảng trống trong tên tệp của bạn, hãy sử dụng điều này:

find .session/ -atime +7 -print0 | xargs -0 -r rm


7 sẽ điền vào dòng lệnh với các tệp sẽ bị xóa, sau đó chạy lệnh

8 ít hơn rất nhiều so với

9, sẽ gọi lệnh

8 cho mỗi tệp.

Chỉ hai xu của tôi

Hướng dẫn is it safe to delete php session files? - có an toàn để xóa các tệp phiên php không?

Blitz

11.9k3 Huy hiệu vàng49 Huy hiệu bạc64 Huy hiệu đồng3 gold badges49 silver badges64 bronze badges

Đã trả lời ngày 30 tháng 1 năm 2014 lúc 8:40Jan 30, 2014 at 8:40

AndiandiAndi

5334 Huy hiệu bạc7 Huy hiệu Đồng4 silver badges7 bronze badges

2

Cd to Phiên thư mục và sau đó:

1) Xem các phiên cũ hơn 40 phút:

#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;
1

2) Hủy bỏ các phiên cũ hơn 40 phút:

#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;
2

Đã trả lời ngày 30 tháng 3 năm 2017 lúc 16:31Mar 30, 2017 at 16:31

1

Sử dụng Cron với Tìm để xóa các tệp cũ hơn ngưỡng đã cho. Ví dụ: để xóa các tệp chưa được truy cập trong ít nhất một tuần.

find .session/ -atime +7  -exec rm {} \;

Đã trả lời ngày 17 tháng 3 năm 2009 lúc 13:46Mar 17, 2009 at 13:46

Vartecvartecvartec

128K36 Huy hiệu vàng213 Huy hiệu bạc242 Huy hiệu Đồng36 gold badges213 silver badges242 bronze badges

1

Bạn có thể tạo script /etc/cron.hourly/php và đặt ở đó:


0

Sau đó thực hiện tập lệnh (CHMOD +X).

Bây giờ mỗi giờ sẽ bị xóa tất cả các tệp phiên với dữ liệu được sửa đổi hơn 24 phút trước.

Đã trả lời ngày 13 tháng 5 năm 2013 lúc 10:50May 13, 2013 at 10:50

Daniel Mildedaniel MildeDaniel Milde

1.0261 Huy hiệu vàng11 Huy hiệu bạc15 Huy hiệu đồng1 gold badge11 silver badges15 bronze badges


1

Sự cố: Chỉ các tệp: Tìm/var/lib/php5/-type f cũ hơn phút: -cmin nhận cài đặt php: $ (echo "` php -i | grep -i session.gc_maxlifetime làm toán: | cut -d '' -f3` / 60 "| BC) RM FIGHT FILE: -EXEC rm -f {} \;find /var/lib/php5/ -type f
Older than minutes: -cmin
Get php settings: $(echo "`php -i|grep -i session.gc_maxlifetime
Do the math: |cut -d' ' -f3` / 60" | bc)
RM matching files: -exec rm -f {} \;

Wesley nhạt nhẽo

8.6403 Huy hiệu vàng48 Huy hiệu bạc58 Huy hiệu Đồng3 gold badges48 silver badges58 bronze badges

Đã trả lời ngày 25 tháng 2 năm 2014 lúc 0:05Feb 25, 2014 at 0:05

Tiến sĩ Tyrelldr. TyrellDr. Tyrell

2.8291 Huy hiệu vàng15 Huy hiệu bạc9 Huy hiệu đồng1 gold badge15 silver badges9 bronze badges

Dự đoán tốt nhất của tôi là bạn đang ở trên một máy chủ được chia sẻ và các tệp phiên được trộn cùng với tất cả người dùng để bạn không thể, bạn cũng không nên xóa chúng. Những gì bạn có thể làm, nếu bạn lo lắng về việc mở rộng quy mô và/hoặc quyền riêng tư phiên của người dùng, là chuyển các phiên vào cơ sở dữ liệu.

Bắt đầu viết cookie đó vào cơ sở dữ liệu và bạn đã có một chặng đường dài hướng tới việc mở rộng ứng dụng của bạn trên nhiều máy chủ khi thời gian đến hạn.

Ngoài ra, tôi sẽ không lo lắng nhiều với 145.000 tệp.

Đã trả lời ngày 18 tháng 3 năm 2009 lúc 2:44Mar 18, 2009 at 2:44

FrankiefrankieFrankie

24.2K10 Huy hiệu vàng80 Huy hiệu bạc119 Huy hiệu đồng10 gold badges80 silver badges119 bronze badges

1

Sử dụng bên dưới cron:


2

Slartidan

19.3K12 Huy hiệu vàng82 Huy hiệu bạc124 Huy hiệu đồng12 gold badges82 silver badges124 bronze badges

Đã trả lời ngày 7 tháng 8 năm 2015 lúc 16:53Aug 7, 2015 at 16:53

Phiên PHP có an toàn không?

“Phiên Php có an toàn không? Các phiên PHP chỉ an toàn như ứng dụng của bạn làm cho chúng. Các phiên PHP sẽ cho phép khách hàng một chuỗi giả danh (ID phiên phiên) để họ tự phân biệt, nhưng không có khả năng chuỗi bị chặn bởi kẻ tấn công, kẻ xâm lược có thể tưởng tượng là máy khách đó.PHP sessions are only as secure as your application makes them. PHP sessions will allow the client a pseudorandom string (“session ID”) for them to distinguish themselves with, but on the off chance that the string is intercepted by an attacker, the aggressor can imagine to be that client.

Tại sao các phiên PHP lại quan trọng?

Phiên là một cách đơn giản để lưu trữ dữ liệu cho người dùng cá nhân so với ID phiên duy nhất.Điều này có thể được sử dụng để tồn tại thông tin trạng thái giữa các yêu cầu trang.ID phiên thường được gửi đến trình duyệt qua cookie phiên và ID được sử dụng để truy xuất dữ liệu phiên hiện có.a simple way to store data for individual users against a unique session ID. This can be used to persist state information between page requests. Session IDs are normally sent to the browser via session cookies and the ID is used to retrieve existing session data.

Làm cách nào để xóa tệp phiên?

Nếu bạn sử dụng trình điều khiển tệp cho phiên, chỉ cần xóa các tệp đó trong lưu trữ/khung/phiên.Trong cấu hình/phiên.PHP Bạn có thể tìm thấy trọn đời, mặc định nó được đặt trong 2 giờ.Sau 2 giờ, nó sẽ tự động gỡ bỏ.remove those files in storage/framework/sessions . In config/session. php you can find lifetime , default it's set for 2 hours. After 2 hours it's automatically removed.

Các tệp phiên Php được lưu trữ ở đâu?

Phiên Php Bắt đầu theo mặc định, dữ liệu phiên được lưu trữ trong thư mục của máy chủ /TMP trong các tệp được đặt tên là SESS_ theo sau là chuỗi chữ và số duy nhất (định danh phiên).the server's /tmp directory in files that are named sess_ followed by a unique alphanumeric string (the session identifier).