Symfony 2 - Произошла ошибка при загрузке панели инструментов веб-отладки (404: не найдено)
Начиная с обновления до symfony 2.2 панель инструментов веб-отладки больше не загружается в app_dev.php.
Я получаю следующую ошибку:
An error occurred while loading the web debug toolbar (404: Not Found).
Do you want to open the profiler?
В prod.log я получаю следующее:
request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /_profiler/84fb75cc3ffd5435474ebe4250e01fac2cdf49c1"" at /httpdocs/project/app/cache/prod/classes.php line 3597 [] []
request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /_wdt/452d5b4aa2dd9388285fa1c286d5c54218029c71"" at /httpdocs/priject/app/cache/prod/classes.php line 3597 [] []
Я несколько раз очистил кеш:)
Интересен тот факт, что в /app _dev.php все ссылки на странице больше не ссылаются на /app _dev.php.
включая профиль (/_profiler/5fdc27cb82c4e9e426b3ab27377deb0b760fdca2)
когда я изменяю URL вручную и добавляю app_dev.php к URL-адресу, профилировщик загружается правильно.
routing_dev.yml:
_assetic:
resource: .
type: assetic
_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
Буду благодарен за любую помощь.
UPDATE I: config_dev.yml
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
ОБНОВЛЕНИЕ II: AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new JMS\AopBundle\JMSAopBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),
new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
new myProject\MyBundle\myBundle(),
new FOS\UserBundle\FOSUserBundle(),
new myProject\MyBackendBundle\myBackendBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
}
Обновление III:.htaccess
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule .? %{ENV:BASE}app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
UPDATE: Я нашел ошибку, это был неправильный (старый) тег рендеринга в шаблоне.: (
Спасибо за поддержку
Ответы
Ответ 1
У меня тоже была эта проблема, постарайтесь обратить внимание на ваш .htaccess и сделать так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] ##### this is the part that you should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app_dev.php [L] ##### this is the part that you should tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# When mod_rewrite is not available, we instruct a temporary redirect of
# the startpage to the front controller explicitly so that the website
# and the generated links can still be used.
RedirectMatch 302 ^/$ /app.php/
# RedirectTemp cannot be used instead
</IfModule>
</IfModule>
Ответ 2
У меня возникла эта особая проблема после установки моего приложения в новом ящике Linux. Я просто забыл активировать mod_rewrite в Apache2
[sudo] a2enmod rewrite
[sudo] service apache2 restart
Надеюсь, это поможет!
Ответ 3
Другой источник этой ошибки: обновите веб-сервер Apache, не раскомментируя модуль перезаписи. Учитесь, делая!
Ответ 4
Я столкнулся с этой ошибкой, когда я изменяю код поставщика для целей отладки. (Я знаю, что это не правильный путь, но в любом случае.. Я внес изменения, протестировал веб-приложение и забыл отменить код поставщика).
Если это ваше дело, и вы не помните, где именно вы сделали "незаконные" изменения кода поставщика, вы можете удалить каталог поставщика или его компоненты и запустить команду php composer.phar update
, чтобы вытащить исходные версии.
Ответ 5
В Symfony 4 + Flex мне пришлось установить symfony/apache-pack
recipie
composer req apache-pack
Ответ 6
ваши правила перезаписи, вероятно, вызывают это. Несколько мгновений назад я переписывал мои, и у меня была такая же проблема с профилировщиком.
Ответ 7
Для меня это происходит, когда я изменил .htaccess(из веб-каталога), чтобы вызвать app_dev.php вместо app.php, но я не изменил его всюду в файле .htaccess. После его изменения исчезли ошибки app_dev.php.
Ответ 8
просто перезагрузите WAMP/LAMP, он работает для меня.