Khắc Phục Lỗi phpMyAdmin: “session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)”
Chào bạn!
Khắc Phục Lỗi phpMyAdmin: “session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)”
Nếu bạn đang sử dụng phpMyAdmin và bỗng nhiên gặp phải lỗi “session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)”, đừng quá lo lắng! Mình cũng đã từng gặp phải vấn đề này và mất một chút thời gian để tìm ra cách khắc phục.
Lỗi này xuất hiện khi PHP không thể ghi vào tệp session, điều này thường do vấn đề quyền truy cập đối với thư mục chứa các tệp session. Cụ thể, thư mục này không có quyền ghi cho người dùng web server (người dùng nginx hoặc apache).
Trong bài viết này, mình sẽ chia sẻ cách mình đã giải quyết lỗi này, hy vọng sẽ giúp bạn tiết kiệm thời gian và khắc phục vấn đề nhanh chóng. Các bước đơn giản, dễ làm, và sau khi thực hiện, mọi thứ sẽ trở lại bình thường.
Các Bước Khắc Phục Lỗi “session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)”
Lỗi này có thể được khắc phục bằng cách đảm bảo rằng thư mục chứa các tệp session của PHP có quyền truy cập đúng cho người dùng web server. Dưới đây là các bước cụ thể mà mình đã làm để giải quyết vấn đề:
1. Kiểm Tra Quyền Truy Cập Thư Mục Session
Lỗi này thường xảy ra nếu thư mục chứa các tệp session của PHP không có quyền cho người dùng web server ghi dữ liệu. Để khắc phục, bạn cần cấp quyền cho thư mục này.
1.1. Đảm bảo thư mục session có quyền truy cập cho người dùng web server:
sudo chown -R www-data:www-data /var/lib/php/session
Trong đó: – www-data là người dùng web server (dùng cho Apache). – Nếu bạn sử dụng Nginx, thay www-data bằng nginx:
sudo chown -R nginx:nginx /var/lib/php/session
1.2. Cấp quyền ghi cho thư mục session:
sudo chmod -R 700 /var/lib/php/session
2. Kiểm Tra Cấu Hình PHP
Lỗi cũng có thể xảy ra nếu cấu hình PHP không chính xác, đặc biệt là trong phần cấu hình session.save_path. Bạn cần đảm bảo rằng đường dẫn session.save_path trỏ đến thư mục hợp lệ.
2.1. Mở file php.ini (thường có đường dẫn là:
- /etc/php/7.x/apache2/php.ini (cho Apache)
- /etc/php/7.x/fpm/php.ini (cho Nginx)
2.2. Kiểm tra và đảm bảo rằng dòng session.save_path trỏ đến thư mục hợp lệ:
session.save_path = "/var/lib/php/session"
2.3. Sau khi thay đổi cấu hình, bạn cần khởi động lại Apache hoặc Nginx để áp dụng thay đổi:
sudo systemctl restart apache2 # Apache sudo systemctl restart nginx # Nginx sudo systemctl restart php7.x-fpm # PHP-FPM (thay 7.x bằng phiên bản PHP của bạn)
3. Xóa Session Cũ
Đôi khi, các tệp session cũ có thể gây ra lỗi này. Bạn có thể thử xóa các tệp session cũ trong thư mục /var/lib/php/session:
sudo rm -rf /var/lib/php/session/*
Sau khi xóa xong, hãy khởi động lại dịch vụ web server để thử lại.
4. Kiểm Tra Cookie trong Trình Duyệt
Đảm bảo rằng cookie được bật trong trình duyệt của bạn. Nếu cookie bị tắt, phpMyAdmin có thể không thể lưu session đúng cách.
5. Kiểm Tra Log PHP và Nginx/Apache
Nếu vấn đề vẫn tiếp tục, bạn có thể kiểm tra các log của PHP và web server để tìm hiểu thêm về nguyên nhân của lỗi:
- Log PHP:
/var/log/php-fpm/error.log
- Log Nginx:
/var/log/nginx/error.log
- Log Apache:
/var/log/apache2/error.log
Kết Luận
Hy vọng bài viết này đã giúp bạn giải quyết được lỗi **”session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)”** trên phpMyAdmin. Việc cấp quyền đúng cho thư mục session và kiểm tra cấu hình PHP là cách đơn giản và hiệu quả nhất để khắc phục vấn đề này.
Nếu bạn vẫn gặp khó khăn, đừng ngần ngại để lại câu hỏi dưới bài viết này. Chúc bạn thành công!