Doc #70520 [Ana]: session_regenerate_id() "Failed to create session ID" with custom SessionHandler
| From: | yohgaki@php.net | Date: | Fri, 18 Sep 2015 09:19:21 +0000 |
| Subject: | Doc #70520 [Ana]: session_regenerate_id() "Failed to create session ID" with custom SessionHandler | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-12762@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70520&edit=1
ID: 70520
Updated by: yohgaki@php.net
Reported by: hpdl at oscommerce dot com
Summary: session_regenerate_id() "Failed to create session
ID" with custom SessionHandler
Status: Analyzed
Type: Documentation Problem
Package: Session related
Operating System: Win10
PHP Version: 7.0.0RC3
Assigned To: yohgaki
Block user comment: N
Private report: N
New Comment:
s/write/read/
Previous Comments:
------------------------------------------------------------------------
[2015-09-18 09:18:26] yohgaki@php.net
Found what's wrong.
Current session save handler expects session read function returns STRING type when there is no
error.
However, the code
public function read($id)
{
$data = parent::read($id);
return @mcrypt_decrypt(MCRYPT_3DES, $this->key, $data, MCRYPT_MODE_ECB);
}
returns non string because $this->key is not valid key length.
Apparently, the document has wrong size of key which results mcrypt_decrypt() error. This makes fail
to write session data.
Making documentation problem.
------------------------------------------------------------------------
[2015-09-18 09:05:41] requinix@php.net
I tried it with a session_save_path(".") immediately before the session_start(). CWD was a
local directory, and when I ran the code I posted earlier (in the same location) it worked
correctly.
------------------------------------------------------------------------
[2015-09-18 09:03:03] yohgaki@php.net
I got it right. I'll check it soon.
------------------------------------------------------------------------
[2015-09-18 08:58:38] yohgaki@php.net
It seems Windows only, doesn't it?
I tried the save handler with php-7.0.0RC3 tag and PHP-7.0 branch on my linux box and it works.
Is your session.save_path a local filesystem? i.e. It's not Windows share or like. I know some
users are having problem with shared file systems.
------------------------------------------------------------------------
[2015-09-18 00:06:49] requinix@php.net
Okay, I see it. So rather it's a general failure when overriding SessionHandler::write(), not
about the save path.
(Note that the first echo needs to be commented out as it creates output which will interfere.)
Tentatively assigning to @yohgaki as he did some work with session_regenerate_id() before the RC3
release.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=70520
--
Edit this bug report at https://bugs.php.net/bug.php?id=70520&edit=1