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…
Bình luận