2011-12-04 41 views
5

Tôi đang chạy một trang web có máy chủ nginx với PHP Fastcgi trên VPS. Tôi đã cố gắng để cấu hình php.ini (trong/etc/php5/cgi) để có phiên PHP kéo dài hơn 3 ngày (259200 giây), nhưng nó không hoạt động và phiên php của tôi không kéo dài hơn một giờ.Phiên PHP hết hạn quá sớm

phiên My cấu hình hiện tại trong php.ini:

session.use_cookies = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 259200 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 259200 
session.bug_compat_42 = Off 
session.bug_compat_warn = Off 
session.referer_check = 
session.entropy_length = 0 
session.cache_limiter = nocache 
session.cache_expire = 259200 
session.use_trans_sid = 0 
session.hash_function = 0 

gì có thể là vấn đề ở đây?

+1

Bạn có chắc đó là tệp php.ini đang được tải vào PHP không? Bạn đã thử kiểm tra lại đường dẫn "Loaded Configuration File" trong 'phpinfo()' để chắc chắn chưa? – animuson

+0

Hãy thử sử dụng 'var_dump (ini_get ('session.cookie_lifetime'));' trong một tệp PHP trên tất cả các cài đặt áp dụng trong các giá trị ini PHP của bạn để đảm bảo rằng chúng không bị ghi đè ở một nơi khác. – Treffynnon

+0

@animuson: Có, nó đang được tải. Tệp cấu hình (php.ini) Đường dẫn \t/etc/php5/cgi Tệp cấu hình được tải \t /etc/php5/cgi/php.ini Quét thư mục này để có thêm tệp .ini \t /etc/php5/cgi/conf.d Các tệp .ini khác được phân tích cú pháp \t /etc/php5/cgi/conf.d/curl.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mysql. ini, /etc/php5/cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini – NeDark

Trả lời

10

Điều này nghe có vẻ hơi giống Ubuntu hoặc Debian trên máy chủ. Nếu tôi nhớ chính xác thì có một cronjob ở đâu đó (được cài đặt bởi php5 hoặc gói php5-common) làm sạch thư mục phiên của bạn thường xuyên hơn.

Tôi khuyên bạn nên định cấu hình các phiên của mình để được lưu ở một nơi khác (mặc định). Điều chỉnh session.save_path và xác minh với cronjob không làm trống nó.

cronjob ở đâu đó như /etc/cron.d/php - để chắc chắn, hãy chạy dpkg -L php5 hoặc dpkg -L php5-common. Giả sử bạn đang sử dụng Ubuntu (hoặc Debian), điều này sẽ cho bạn biết vị trí của tất cả các tệp được cài đặt.

+0

Cuối cùng tôi đã giải quyết vấn đề bằng cách [lưu trữ các phiên với memcached] (http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/). Tuy nhiên, giải pháp của bạn có vẻ hợp lệ vì vậy tôi sẽ đánh dấu câu trả lời của bạn. Cảm ơn. – NeDark

4

Để giúp bạn gỡ lỗi, bạn có thể kiểm tra các thiết lập hiện tại mà công việc PHP cron được "nhìn thấy" bằng cách thực hiện:

/usr/lib/php5/maxlifetime

Kịch bản maxlifetime tìm kiếm tất cả php của bạn .ini tệp cho session.gc_maxlifetime và sử dụng giá trị lớn nhất. Giá trị được in chỉ trong vài phút.

+0

Tôi đoán đây là tập lệnh trong ubuntu 15.10:/usr/lib/php5/sessionclean – talsibony

Các vấn đề liên quan