Hướng dẫn fix lỗi Warning: SessionHandler::read(): trong Magento 2
Việc nhà phát triển Magento gặp lỗi hoặc thử một tính năng mới không phải là điều xa lạ. Có thể bạn cũng đang gặp phải lỗi SessionHandler::read(), điều này ảnh hưởng trực tiếp tới cửa hàng của bạn. Lỗi này thường xảy ra trong quá trình cài đặt, cũng có trường hợp xảy ra sau khi cài đặt. Để giúp bạn giải quyết vấn đề, trong bài viết này mình sẽ hướng dẫn bạn cách fix lỗi Warning: SessionHandler::read(): trong Magento 2.
Vấn đề
Trong quá trình cài đặt, bạn nhận được thông báo như sau:
Warning: SessionHandler::read(): open(..) failed: No such file or directory (2) ../magento2/lib/internal/Magento/Framework/Session/SaveHandler.php on line 74'
in ../magento2/lib/internal/Magento/Framework/App/ErrorHandler.php:67
Hoặc:
Warning: SessionHandler::read(): open(..., O_RDWR) failed: No such file or directory (2) in../vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Đặc biệt là lỗi chỉ xảy ra trong các phiên bản cũ. Bạn sẽ không thấy exception này với các phiên bản từ 29/9/2015 trở lên.
Nguyên nhân
Điều này xảy ra khi tham số PHP session.save_handler
của bạn được đặt thành một số session storage khác ngoài file (ví dụ: redis, memcached, v.v.).
Các giải pháp để sửa lỗi SessionHandler::read() trong Magento 2
1. Nâng cấp Magento 2
Vì lỗi này xảy ra ở những phiên bản cũ, nên bạn có thể khắc phục bằng cách cập nhật phiên bản mới.
Bạn có thể tham khảo bài viết: Hướng dẫn cập nhật phiên bản Magento 2.
Hoặc tham khảo trên trang chủ Magento: https://devdocs.magento.com/guides/v2.3/install-gde/install/cli/install-cli-uninstall.html#instgde-install-magento-update.
Nếu bạn không muốn nâng cấp thì có thể xem các cách dưới đây.
2. Chỉnh php.ini
Trước hết, bạn hãy xác định vị trí của php.ini bằng lệnh:
php -i | grep "Loaded Configuration File"
Thông thường các vị trí sẽ ở:
- Đối với Ubuntu: /etc/php5/cli/php.ini
- Đối với CentOS: /etc/php.ini
Đăng nhập với tư cách người dùng root . Bây giờ, bạn có thể mở tệp php.ini trong trình soạn thảo văn bản.
Tìm tới session.save_handler
và thiết lập. Comment đoạn code:
;session.save_path = <path>
Đặt nó thành đường dẫn hệ thống file như sau:
session.save_handler = files
3. Chỉnh sửa env.php
Tìm tới file env.php theo đường dẫn app/etc. Sau đó thay thế đoạn code sau:
'session' =>
array (
'save' => 'files'
),
Thành đoạn code:
'session' =>
array (
'save' => 'db'
),
Như vậy là mình đã hướng dẫn xong cách fix lỗi Warning: SessionHandler::read(): trong Magento 2.
Cảm ơn bạn đã đọc bài viết.