当我想启用web Profiler工具栏时,Symfony2会在开发人员模式下激活大量404:
GET http://www.domain.dev/_wdt/de040c 404 (Not Found)
所以我调试了ProfilerController并发现当文件系统中没有找到配置文件数据时它会触发404。
但是对于页面的每个请求都会在目录" app / cache / dev / profiler"下创建新目录,但仍然没有文件。
app / cache / dev下的文件树如下所示:
正如您所看到的,目录" profiler"包含一些目录(并且它将随着对站点的每个请求而增长),但绝不会包含任何文件。有nginx和php进程的完全写权限,我还配置了cache-directory作为一个例子,使用/ dev / shm下的共享内存来防止我的主机系统的副作用(我使用vagrant进行开发) )
所以我的问题是:为什么没有创建探查器数据,以及"谁"会对此负责吗?
我发现,在FileProfileStorage.php中,所有个人资料数据都将被收集和序列化:
// Store profile
$data = array(
'token' => $profile->getToken(),
'parent' => $profile->getParentToken(),
'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
'data' => $profile->getCollectors(),
'ip' => $profile->getIp(),
'method' => $profile->getMethod(),
'url' => $profile->getUrl(),
'time' => $profile->getTime(),
);
if (false === file_put_contents($file, serialize($data))) {
return false;
}
此处将抛出异常"不允许序列化Closure"。我仍然没有发现哪个DataCollector将负责使用Closure而不是" real"数据
我发现TwigCacheBundle的ProfilerExtension会在这里抛出异常("不支持序列化的闭包")
答案 0 :(得分:0)
我自己解决了。 TwigCacheBundle的ProfilerExtension在为Web Profiler序列化其数据时引发了异常。