Symfony2 запускает 404 в режиме разработчика, когда я хочу включить панель инструментов веб-профилировщика:
GET http://www.domain.dev/_wdt/de040c 404 (Not Found)
Поэтому я отладил ProfilerController и обнаружил, что он запускает 404, когда в файловой системе не найдено данных профиля.
Но при каждом запросе к странице будут создаваться новые каталоги в каталоге «app / cache / dev / profiler», но по-прежнему нет файлов.
Дерево файлов в app / cache / dev выглядит так:
Как видите, каталог «профилировщик» содержит несколько каталогов (и будет расти с каждым запросом к сайту), но никогда не будет никаких файлов. Для процесса nginx и php предусмотрены полные права на запись. Я также настроил в качестве примера каталог-кеш, чтобы использовать совместно используемую память в / 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;
}
Здесь будет выдано исключение «Сериализация закрытия не разрешена». Я до сих пор не выяснил, какой DataCollector будет отвечать за использование Closure вместо «реальных» данных.
я понял, что ProfilerExtension TwigCacheBundle будет генерировать здесь исключение («Сериализация замыканий не поддерживается»)
Решил это сам. ProfilerExtension TwigCacheBundle вызвала исключение во время сериализации своих данных для веб-профилировщика.
Я сделал тянуть запрос на это.
Других решений пока нет …