LAMP ::: Mánh :: Thay đổi ‘session_save_path’

Theo mặc định, PHP sẽ lưu các giá trị của session vào /tmp/. Nhưng một số tay cho thuê máy chủ vì nhát chết nên đã chmod 755 /tmp. Trên trang Manual của php.net có một giải pháp khá đơn giản: dùng .htaccess.

Giờ cụ thể hoá giải pháp đó ra như thế này:

$ mkdir tmp && chmod 777 tmp
$ echo php_value session.save_path `pwd`/tmp/ >> .htaccess
$ cd tmp/
$ echo -e "Order Deny,Allow\\nDeny from all" > .htaccess

Đơn giản có thế thôi, nếu mà không hiểu thì diễn đạt lại vậy.

Cái giải pháp kia nó bảo là thêm vào .htaccess dòng này:

php_value session.save_path <đường dẫn tuyệt đối>

<đường dẫn tuyệt đối> ở đây là một thư mục được chmod 777. Thay vì ngồi đoán thư mục nào trên máy chủ đã được chmod 777 thì hãy tự tạo một cái :P. Ví dụ là thư mục ./tmp/.

Xác định đường dẫn tuyệt đối là trò trẻ con, ấy thế mà không phải ai cũng biết. Nếu không biết trò này thì vào thư mục ./tmp/ vừa tạo, rồi tạo tập tin pwd.php với nội dung:

<?php echo dirname(__FILE__); ?>

Xong rồi mở tập tin đó trên trình duyệt thì sẽ thấy. Giả sử thấy là /home/lngt/public_html/tmp thì soạn .htaccess với nội dung:

php_value session.save_path /home/lngt/public_html/tmp/

rồi tống .htaccess vào thư mục gốc của host.

Để cấm truy cập ./tmp/ từ trình duyệt, soạn tiếp một .htaccess khác rồi tống vào ./tmp/, với nội dung:

Order Deny,Allow
Deny from all

Giờ kiểm tra hoạt động của session. Soạn một tập tin PHP, ví dụ như session.php với nội dung:

<?php
session_start();
if (!isset($_SESSION["count"])) {
   $_SESSION["count"] = 0;
} else {
   $_SESSION["count"]++;
}
echo $_SESSION["count"];
?>

rồi chạy thử. Cần thì nhòm xem ./tmp/ có thêm tập tin nào không.

Đấy, nói thế là quá cụ tỉ rồi. Chả đơn giản hơn được nữa.

Dưng mà, nói thật, cực chẳng đã thì mới phải dùng đến mấy cái hàm session của PHP…


Chuyên mục:

,

Một bình luận

  1. Chả biết SF cấu hình kiểu gì mà dù đã chmod 777 ngon lành rồi mà vẫn không được ghi vào thư mục đó :(.

    Chỉ chạy trên localhost là ngon 🙁

Bình luận

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.