CascadiaPHP 2024


(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SessionHandlerInterface::readRead session data


public SessionHandlerInterface::read(string $id): string|false

Reads the session data from the session storage, and returns the results. Called right after the session starts or when session_start() is called. Please note that before this method is called SessionHandlerInterface::open() is invoked.

This method is called by PHP itself when the session is started. This method should retrieve the session data from storage by the session ID provided. The string returned by this method must be in the same serialized format as when originally passed to the SessionHandlerInterface::write() If the record was not found, return false.

The data returned by this method will be decoded internally by PHP using the unserialization method specified in session.serialize_handler. The resulting data will be used to populate the $_SESSION superglobal.

Note that the serialization scheme is not the same as unserialize() and can be accessed by session_decode().



The session id.

Return Values

Returns an encoded string of the read data. If nothing was read, it must return false. Note this value is returned internally to PHP for processing.

See Also

add a note

User Contributed Notes 1 note

1 year ago
It appears that, if this function returns false, it causes "session_start(): Failed to read session data: user" to be emitted in the error log. This also seems to have a cascading effect that causes the write() method not to be called.

So, returning false appears to only be for indicating an error state. To indicate that there is no existing session, but that it is okay to create one, it appears that returning an empty string is the way to go.
To Top