Symfony 3.1.5警告:SessionHandler :: read():您的uid不会创建会话数据文件

mar*_*nes 26 php apache session symfony

我在由Vagrant 1.8.6/VirtualBox 5.1.6管理的Ubuntu 14.04,PHP 7.1和Apache 2.4.23堆栈上运行Symfony 3.1.5.我正在尝试使用一个简单的控制器来为我的前端渲染响应:

<?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!');
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试访问我的Symfony前端时,/app_dev.php我看到:

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

我的Apache日志读取:

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

Symfony开发日志读取:

==> /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)"} []

看来这似乎是与会话相关的问题,我已经参考了会话管理的Symfony文档.它指出:

Symfony会话与php.ini指令session.auto_start = 1不兼容.该指令应在php.ini,webserver指令或.htaccess中关闭.

session.auto_start = 0在我php.ini和该文件由用户和组拥有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

我按照Symfony文档中的说明尝试创建.htaccess(我放在我的DocumentRoot),但错误仍然存​​在.

我已经搜索了几个线程和问题的解决方案,但没有落在任何东西上.是什么原因引起了这个?

mar*_*nes 50

编辑config/config.yml和更换save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"save_path: /var/lib/php/sessions固定的错误.

如果使用自动将空格转换为制表符的编辑器/ IDE,请务必在保存更改之前禁用该功能.如果不这样做,可能会导致"不包含有效的YAML"错误.

  • 我正在为我的项目使用Vagrant,这是我今天早上要做的事情.团队的其他成员在MAC上使用MAMP,他们没有必要做出改变.我想知道为什么它适用于开发服务器和现场. (5认同)
  • 工作,但配置不应该转到config/config_dev.yml,以避免意外触摸您的生产环境? (2认同)

Tak*_*man 18

我有同样的问题.对我有用的修复是将var/sessions所有者更改为www-data:www-data(php-fpm子进程的相同用户/组):

sudo chown -R www-data:www-data var/sessions/
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,"不允许操作".我猜主要是因为Vagrant的sync文件夹. (5认同)

Mar*_*gis 15

避免仅针对发生环境中出现的问题更改prod配置

使用Vagrant(PHP-FPM 7 + Nginx)和同步文件夹(/ vagrant~default)时遇到同样的问题

刚刚解决了

    session:
        save_path: '/tmp'
Run Code Online (Sandbox Code Playgroud)

config_dev.yml内部框架入门

只需选择Webserver和PHP可以读取/写入的地方,而不会出现权限问题.


小智 8

如果Magento 2生成此警告,

只需删除var/session文件夹中已存在的会话并将其修复.


Jes*_*uez 5

我遇到了类似的问题,清除浏览器的缓存和存储的数据解决了该问题。

在Chrome和Opera上,您应该执行以下操作:

Developer tools > Application > Clear Storage > Clear Site Data
Run Code Online (Sandbox Code Playgroud)


小智 5

就我而言,*删除浏览器 cookie 解决了这个问题。我没有执行上面提到的任何步骤并尝试更改权限,但所有这些都不是问题。我在 magento 上遇到了问题。