DB Session adapter corupts session data with Postgresql DB
Maximskv opened this issue · 0 comments
Maximskv commented
Expected and Actual Behavior
When using the Db session adapter with Postgresql the session fails to be written and read properly.
The adapter serializes the session->data
and tries to store the result in a text field. The serialized session->data
text has null bytes. Postgresql is omitting everything after the first null byte resulting in cropped session->data
that cannot be read, rendering the whole component unusable.
A quick dirty fix I have used to overcome the issue:
- Use a json type field for the
data
field in the DB session table. - json_encode() the session->data prior to writing it to db (json_decode the data after reading it respectively ).
As demonstrated in this gist.
Steps to reproduce:
will add a demonstration project at a later point
- Use the DB session adapter with a Postgresql database
- Generate a new session.
- Try to read the generated session -> fails as the serialized
session->data
has been corrupted while being saved to the db.
Details
- Phalcon Framework version: 4.0
- Phalcon Incubator version: 1.1
- PHP Version: 7.4
- Operating System: maxOS
- Server: Nginx | Apache
- Other related info :
- Database : Postgresql 13.1