Symfony 3.1.5 Warning: SessionHandler::read(): Session data file is not created by your uid

34,173

Solution 1

Editing config/config.yml and replacing save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" with save_path: /var/lib/php/sessions fixed the error.

If you use an editor/IDE that automatically converts spaces to tabs, be sure to disable that feature before saving your changes. Failure to do so may cause a 'does not contain valid YAML' error to occur.

Solution 2

I had the same problem. The fix that worked for me is to change var/sessions owner to www-data:www-data (same user/group for php-fpm sub-processes) :

sudo chown -R www-data:www-data var/sessions/

Solution 3

AVOID change prod configuration for troubles that only occurs in development environment

Had the Same trouble when using Vagrant (PHP-FPM 7 + Nginx) with a sync folder (/vagrant ~ default)

Solved just put

    session:
        save_path: '/tmp'

on config_dev.yml inside framework entry

Just choose some place that Webserver and PHP can read/write without permission issues.

Solution 4

If Magento 2 generates this warning,

Just delete already existed session inside var/session folder and its fixed.

Solution 5

In my case, *removing browser cookies fixed the issue. I didn't do any of the step mentioned above and tried to change permissions and all but no that wasn't the problem. I've faced problem on magento.

Share:
34,173
marcusnjones
Author by

marcusnjones

Web developer

Updated on July 09, 2022

Comments

  • marcusnjones
    marcusnjones almost 2 years

    I'm running Symfony 3.1.5 on a Ubuntu 14.04, PHP 7.1 and Apache 2.4.23 stack managed by Vagrant 1.8.6/VirtualBox 5.1.6. I'm trying to use a simple controller I've made to render a response on my frontend:

    <?php
    
    namespace AppBundle\Controller;
    
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Component\BrowserKit\Response;
    
    class LandingController {
        /**
         * @Route("/", name="homepage")
         */
        public function showAction(){
            return new Response('This is the landing page!');
        }
    }
    

    When I attempt to access my Symfony frontend via /app_dev.php I see:

    Warning: SessionHandler::read(): Session data file is not created by your uid 500 Internal Server Error - ContextErrorException

    My Apache log reads:

    CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366

    The Symfony dev log reads:

    ==> /var/www/conan/var/logs/dev.log <== [2016-10-11 14:23:04] request.INFO: Matched route "{route}". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\LandingController::showAction","_route":"homepage"},"request_uri":"http://conan.dev/app_dev.php/","method":"GET"} [] [2016-10-11 14:23:04] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: SessionHandler::read(): Session data file is not created by your uid at /var/www/conan/var/cache/dev/classes.php:366)"} []

    Seeing as this appears to be a session related issue, I've referred to the Symfony documentation for Session Management. It states:

    Symfony sessions are incompatible with php.ini directive session.auto_start = 1 This directive should be turned off in php.ini, in the webserver directives or in .htaccess.

    session.auto_start = 0 in my php.ini and the file is owned by user and group root:

    $ ls -lta /etc/php/7.1/fpm/php.ini -rw-r--r-- 1 root root 70584 Sep 30 07:29 /etc/php/7.1/fpm/php.ini

    I've tried creating an .htaccess (which I placed in my DocumentRoot) per the instructions in the Symfony documentation, but the error persists.

    I've searched several threads and questions for a solution but have not landed on anything. Any ideas what is causing this?