Я новичок в symfony.
Я сделал:
rm -rf app/cache/* rm -rf app/logs/*
Затем:
sudo setfacl -R -mu:www-data:rwx -mu:user :rwx app/cache app/logs sudo setfacl -dR -mu:www-data:rwx -mu:user:rwx app/cache app/logs
ls -al
дает:
drwxrwxrwx 3 user user 1024 мая 29 00:06 cache(cache is on green background) drwxrwxrwx 2 user user 1024 мая 29 00:06 logs(logs is on green background)
Теперь я пытаюсь получить доступ /Symfony/web/app_dev.php – Он показывает:
Произошла ошибка при загрузке панели инструментов веб-отладки (404: не найдено).
Вы хотите открыть профилировщик?
Когда я нажимаю OK, он перенаправляется на
/Symfony/web/app_dev.php/_profiler/bd8604738ac7af3c9d0611ea12076f0f62422601
и 404 файла не найдено ..
Это приложение / logs / dev.log
[2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] [] [2013-05-29 00:12:29] request.INFO: Matched route "_welcome" (parameters: "_controller": "Acme\DemoBundle\Controller\WelcomeController::indexAction", "_route": "_welcome") [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\Fragment\FragmentHandler::onKernelRequest". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DeprecationLoggerListener::injectLogger". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Acme\DemoBundle\EventListener\ControllerListener::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bridge\Monolog\Handler\FirePHPHandler::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bridge\Monolog\Handler\ChromePhpHandler::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\CacheListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\Fragment\FragmentHandler::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse". [] [] [2013-05-29 00:12:29] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onKernelTerminate". [] []
Я не нашел решение, пожалуйста, помогите
Редактировать:
Routing_dev.xml
_welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index } _demo_secured: resource: "@AcmeDemoBundle/Controller/SecuredController.php" type: annotation _demo: resource: "@AcmeDemoBundle/Controller/DemoController.php" type: annotation prefix: /demo _wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /_profiler _configurator: resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" prefix: /_configurator _main: resource: routing.yml
config_dev.xml
imports: - { resource: config.yml } framework: router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } profiler: { only_exceptions: false } web_profiler: toolbar: true intercept_redirects: false monolog: handlers: main: type: stream path: %kernel.logs_dir%/%kernel.environment%.log level: debug firephp: type: firephp level: info chromephp: type: chromephp level: info assetic: use_controller: true #swiftmailer: # delivery_address: me@example.com
app_dev.php
<?php use Symfony\Component\HttpFoundation\Request; // If you don't want to setup permissions the proper way, just uncomment the following PHP line // read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information //umask(0000); // This check prevents access to debug front controllers that are deployed by accident to production servers. // Feel free to remove this, extend it, or make something more sophisticated. if (isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) ) { header('HTTP/1.0 403 Forbidden'); exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); } $loader = require_once __DIR__.'/../app/bootstrap.php.cache'; require_once __DIR__.'/../app/AppKernel.php'; $kernel = new AppKernel('dev', true); $kernel->loadClassCache(); Request::enableHttpMethodParameterOverride(); $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); $kernel->terminate($request, $response);
Моя проблема заключалась в том, что событие kernel.terminate
выполнялось более 10 секунд. Было очень трудно заметить, потому что профилировщик не измерял сроки для этого события.
Когда я это понял, я сразу же сузил проблему до одного из моих слушателей событий, имеющих ненормально длинный метод __construct
. Слишком длинная печать этого файла с задержкой, что вызвало ошибку таймаута Javascript после 5 попыток.
После исправления прослушивателя- kernel.terminate
событие kernel.terminate
прошло быстро, и проблема исчезла немедленно.
Вы можете быстро увидеть подключенных слушателей с помощью bin/console debug:event-dispatcher kernel.terminate
.
По моему опыту; это происходит, когда вы меняете стандартное поведение ваших маршрутов. Например, в моем случае я использовал загрузчик kernel.request для создания механизма обнаружения языка, который предполагал выбрать наилучший язык для пользователя на основе поддерживаемого им браузера языка.
Я использовал префикс {_locale} во всех моих маршрутах, расположенных в app / config / routing.yml
some_route: resource: "@MyBundle/Resources/config/routing.yml" prefix: /{_locale}/
Таким образом, я смог быстро добавить в начале моих маршрутов код языка, а в моем классе слушателя я перенаправлял клиента на маршрут с префиксом существующего языкового кода, независимо от того, запрашивал ли клиент маршрут с или без локали.
Например, если на моем сайте были только «en» и «de» в качестве языков, и если пользователь запросил
http://www.mysite.com/somepage
или
http://www.mysite.com/fr/somepage
Я перенаправлял клиента на
http://www.mysite.com/en/somepage
Поэтому всякий раз, когда в моем приложении была ошибка, маршрут профайлера не знал об этой ситуации и пытался показать себя с маршрута, который не имеет префикса {_locale}. И это вызвало ошибку 404.
Решение было простым:
Я открыл файл app / config / routing_dev.yml и изменил все маршруты, как показано ниже:
_wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /{_locale}/_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /{_locale}/_profiler _configurator: resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" prefix: /{_locale}/_configurator
Обратите внимание на часть / {_ locale}.
Поэтому проблема решена для меня.
То, что для меня работало, увеличивало значения memory_limit
и max_execution_time
в моем файле php.ini, перезагружая php-fpm (например, brew services restart php56
), а затем перезагружая сервер ( sudo nginx -s reload
). Если после этого все еще не работает, попробуйте перезагрузить компьютер. Это работало для моего коллеги.
Возможно, вы не включили маршруты для веб-профилировщика?
Если вы разместите свой config_dev.yml
& routing_dev.yml
возможно, мы увидим, что не так.
Ваш routing_dev.yml
должен выглядеть примерно так:
_wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /_profiler _configurator: resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" prefix: /_configurator _main: resource: routing.yml
Ваш config_dev.yml
должен содержать это
imports: - { resource: config.yml } - { resource: security_dev.yml } framework: router: resource: "%kernel.root_dir%/config/routing_dev.yml"
Также убедитесь, что app_dev.php
устанавливает среду для dev
так
// ... require_once __DIR__.'/../app/AppKernel.php'; $kernel = new AppKernel('dev', true); $kernel->loadClassCache(); // ...
В моем случае это был конфликт маршрутов. Я изменил маршруты в routing_dev.yml способом, который не противоречит моим маршрутам