5.7 Sessions on a Multi Server Environment

Hey There,

We're migrating all of our c5 sites to a multi server environment behind a load balancer.

It works great for our sites running 5.6.x.

However, 5.7 handles sessions differently and isnt working in the multi server environment.

It looks like there is a is_dir(session_save_path) call somewhere. This works fine on standalone servers, but on mulit-server environments when session save path is a memcached session, it fails saying:

is_dir(): Unable to find the wrapper "tcp" - did you forget to enable it when you configured PHP?

It's trying to treat it's session saving as a file, which will fail in a multi-server environment. We really want it to use native PHP functionality for that (or store a file on it's local file system inside it's DocumentRoot, so that all servers can share it).

Is there a setting for this on how to handle sessions?

We found this in concrete/config/concrete.php around line 587
'session'           => array(
        'name'         => 'CONCRETE5',
        'handler'      => 'file',
        'max_lifetime' => 7200,
        'cookie'       => array(
            'cookie_path'     => false, // set a specific path here if you know it, otherwise it'll default to relative
            'cookie_lifetime' => 0,
            'cookie_domain'   => false,
            'cookie_secure'   => false,
            'cookie_httponly' => false

Is that what we need to change? If so, what do we change it to?

Also, will this break any attempts to upgrade to a newer version of 5.7.x down the road?


View Replies:
Mnkras replied on at Permalink Reply
You could always enable database backed sessions:
leinteractive replied on at Permalink Reply
Thanks, Mnkras. I'll check it out and post back here if it works.

Would this get overridden when we update the system to the latest version?

Mnkras replied on at Permalink Reply
Since the file that is edited/added is not in the core, you don't have to worry about upgrades.
leinteractive replied on at Permalink Reply
Awesome. Thanks!

Do you know if it is possible to do memcached sessions instead?

Just trying to see what our options are.

Also, are there any downsides to database sessions over the default session handling?