Symfony 2 - 致命错误:无法在第532行的C:\ ... \ app \ cache \ dev \ classes.php中重新声明类SessionHandlerInterface

时间:2013-02-04 14:53:44

标签: php symfony

重新安装我的wamp环境后,打开app_dev.php后,屏幕上会显示此错误消息:

  

致命错误:无法在第5行的C:... \ app \ cache \ dev \ classes.php中重新声明类SessionHandlerInterface

有没有人知道出了什么问题?

7 个答案:

答案 0 :(得分:43)

我解决了它清除缓存:

app/console cache:clear

答案 1 :(得分:22)

PHP版 5.4 引入了一个基于名为SessionHandlerInterface的接口的新会话管理系统,看起来您的Symfony2代码在全局名称空间中声明了一个名称相同的类,所以有一个名字冲突。

以下是文档:http://www.php.net/manual/en/class.sessionhandlerinterface.php

  

SessionHandlerInterface是一个定义原型的接口   创建自定义会话处理程序。为了传递自定义会话   处理程序到session_set_save_handler()使用它的OOP调用,   class必须实现这个接口。

答案 2 :(得分:14)

简单的清除缓存对我不起作用。它要求使用以下命令清除生产缓存。

php app/console cache:clear --env=prod --no-debug

答案 3 :(得分:7)

尝试使用下面的一个(或所有)命令清除Symfony2缓存:

php app/console cache:clear --env=prod --no-debug (on production mode)

或/和

php app/console cache:clear --env=dev --no-debug (on development mode)

答案 4 :(得分:3)

只有这对我有用rm -rf app/cache/*

答案 5 :(得分:2)

确保在接口SessionHandlerInterface

中定义了名称空间

<强> EX:

namespace app\cache\dev;

答案 6 :(得分:-1)

即使使用app_dev.php,我也遇到了缓存问题。我会改变路线但是当我尝试通过浏览器访问它时它不会更新。

我试着评论出有缓存的东西(如上所述)。这些都没有效果。

如果我运行控制台缓存:清除它会修复它,但下一次路由更改会再次中断。我不得不运行缓存:清除每次保存,这很荒谬。

我的问题结果是因为我在SFTP上远程工作,PHP Storm(我的编辑器)在其部署配置中“保留了时间戳”。一旦我改变了配置,问题就消失了。显然有一些缓存正在查看文件时间戳,即使在开发环境中也是如此。