重新安装我的 wamp 环境后,我打开 app_dev.php 后屏幕上会显示此错误消息:
致命错误:无法在第 532 行的 C:...\app\cache\dev\classes.php 中重新声明类 SessionHandlerInterface
有谁知道出了什么问题?
我解决了它清除缓存:
app/console cache:clear
PHP 5.4版引入了一个新的会话管理系统,它基于一个名为的接口SessionHandlerInterface
,看起来您的 Symfony2 代码在全局命名空间中声明了一个具有相同名称的类,因此存在名称冲突。
以下是文档:http ://www.php.net/manual/en/class.sessionhandlerinterface.php
SessionHandlerInterface 是一个接口,它定义了用于创建自定义会话处理程序的原型。为了使用其 OOP 调用将自定义会话处理程序传递给 session_set_save_handler(),该类必须实现此接口。
简单的清除缓存对我不起作用。它要求使用以下命令清除生产缓存。
php app/console cache:clear --env=prod --no-debug
只需尝试使用以下一个(或全部)命令清除 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)
只有这对我有用rm -rf app/cache/*
确保您在接口 SessionHandlerInterface 中定义了命名空间
前任:
namespace app\cache\dev;
即使在使用 app_dev.php 时,我也遇到了缓存问题。我会更改路线,但当我尝试通过浏览器访问它时它不会更新。
我尝试注释掉其中缓存的任何内容(如上所述)。这些都没有奏效。
如果我运行控制台缓存:清除它会修复它,但下一次路由更改会再次中断。我必须在每次保存时运行缓存:清除,这太荒谬了。
我的问题原来是因为我通过 SFTP 远程工作,PHP Storm(我的编辑器)在其部署配置中“保留时间戳”。一旦我更改了该配置,问题就消失了。显然,即使在开发环境中,也有一些正在查看文件时间戳的缓存。