[Tut] Những Lỗi liên quan tới "session.save_path" và giải pháp

administrator

Administrator
Biến session.save_path được dùng để làm gì?

Trên các Webserver chạy PHP, thông tin về phiên làm việc hiện tại của người sử dụng thường được lưu vào các file khác nhau và đặt vào một thư mục nào đó. Chẳng hạn:

* thư mục "C:\wamp\tmp", "D:\xampp\tmp"... (đối với hệ thống Windows)
* thư mục "/tmp", "/usr/var/tmp", "/var/lib/php/session"... (đối với hệ thống Linux)
Thư mục mà Webserver dùng để lưu các phiên làm việc này được khai báo thông qua biến "session.save_path" và nằm trong file "php.ini" giống như dưới đây:

Mã:
[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Path to store data
session.save_path = "c:/wamp/tmp"

; Whether to use cookies.
session.use_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0
...
Những lỗi có thể xảy ra với biến "session.save_path"

Do biến "session.save_path" được khai báo trong file "php.ini" nên khi cài đặt cũng như khi sử dụng Joomla! có 2 khả năng lỗi có thể xảy ra:

* Biến "session.save_path" chưa được thiết lập, nghĩa là có giá trị là "None" hoặc "Not Set"
* Biến "session.save_path" đã được thiết lập là đường dẫn tới một thư mục nào đó, nhưng bạn lại không có quyền ghi đối với thư mục này - "Unwriteable"

Lỗi session.save_path

Cách xử lý lỗi

Bước 1: Xác định giá trị hiện tại của biến "session.save_path"


Tạo một file "session.php" có nội dung như sau:

PHP:
<?php 
    echo (($sp=ini_get('session.save_path')) ?$sp:( 'none' ) ); 
?>
Sau đó mở link tới file này. VD: http://tuoitredonganh.vn/joomla/session.php. Thông tin hiển thị trên màn hình chính là đường dẫn tới thư mục chứa session của Webserver.

Bước 2: Thiết lập lại giá trị biến "session.save_path"

Đầu tiên tạo một thư mục (hoặc chọn một thư mục) mà bạn có quyền ghi lên nó. Thiết lập Writeable (nếu là Host Windows) hoặc CHMOD 777 (nếu là Host Linux) cho thư mục này.

Tạo một file ".htaccess" ở thư mục gốc chứa Joomla của bạn với nội dung sau:
Mã:
php_value session.save_path "/duong/dan/sesion/moi"
Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến "session.save_path" bằng file ".htaccess". Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại giúp bạn.

Hoặc tạo một file "php.ini" ở thư mục gốc chứa Joomla của bạn với nội dung sau:

session.save_path = "/duong/dan/session/moi"
Nếu bạn đang làm trên LOCALHOST thì chỉ cần mở file php.ini và chỉnh sửa trực tiếp, sau đó khởi động lại Webserver.

Bạn cũng cần lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến "session.save_path" bằng file "php.ini". Hoặc bạn phải copy file này tới mọi thư mục. Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại giúp bạn.


Hoặc mở file "configuration.php" và thêm vào đầu file đoạn mã sau:

Mã:
<?php
     ini_set('session.save_path','/duong/dan/session/moi'); 
?>
Lưu ý chung:

Thay "/duong/dan/session/moi" bằng đường dẫn phù hợp với Host của bạn, chẳng hạn "D:\www\tuoitredonganh.vn\tmp"; "/home/tuoitredonganh/public_html/tmp", "/var/www/tuoitredonganh.vn/public_html/tmp"...

Nguồn: vinaora
 
Bên trên