Symfony 3错误:session_start():无法初始化存储模块:user(path:)500内部服务器错误 - FatalErrorException

时间:2017-05-24 20:01:26

标签: php symfony session

我尝试在Symfony 3(http://symfony.com/doc/current/doctrine/pdo_session_storage.html)中配置会话,并且我收到此错误:

Error: session_start(): Failed to initialize storage module: user (path: )
500 Internal Server Error - FatalErrorException

Stack Trace

in var/cache/dev/classes.php at line 113 

110. if (ini_get('session.use_cookies') && headers_sent($file, $line)) {
111.     throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
112. }
113. if (!session_start()) {
114.     throw new \RuntimeException('Failed to start the session');
115. }
116. $this->loadSession();

你有什么想法,为什么会出现?

2 个答案:

答案 0 :(得分:0)

最近我在使用docker容器运行的symfony时出现了类似的问题。我的理由是PdoSessionHandler无法连接到数据库。在官方教程中,他们展示了一个在DSN中没有主机密钥的示例,这可能适用于大多数安装。最后,我的服务定义看起来像这样:

Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
    arguments:
        - 'mysql:dbname=%database_name%;host=%database_host%'
        - { db_username: '%database_user%', db_password: '%database_password%' }

我希望它有所帮助!

答案 1 :(得分:0)

我找到了解决方案。 在我的数据库服务器的docker配置中我使用socket,所以我只需要将它添加到我的config.yml文件中:

parameters:
    database_unix_socket: /.../mysqld.sock

然后在doctrine.dbal.unix_socket:

中使用此配置
doctrine:
    dbal:
        unix_socket: '%database_unix_socket%'

干杯, 伊凡。