Symfony 2 - 加载 Web 调试工具栏时出错(404:未找到) [英] Symfony 2 - An error occurred while loading the web debug toolbar (404: Not Found)
问题描述
自 symfony 2.2 更新后,web 调试工具栏不再加载到 app_dev.php 中.
Since the update to symfony 2.2, the web debug toolbar is no longer loaded in app_dev.php.
我收到以下错误:
An error occurred while loading the web debug toolbar (404: Not Found).
Do you want to open the profiler?
在 prod.log 中,我得到以下内容:
In the prod.log I get the following:
request.ERROR: Uncaught PHP Exception SymfonyComponentHttpKernelExceptionNotFoundHttpException: "No route found for "GET /_profiler/84fb75cc3ffd5435474ebe4250e01fac2cdf49c1"" at /httpdocs/project/app/cache/prod/classes.php line 3597 [] []
request.ERROR: Uncaught PHP Exception SymfonyComponentHttpKernelExceptionNotFoundHttpException: "No route found for "GET /_wdt/452d5b4aa2dd9388285fa1c286d5c54218029c71"" at /httpdocs/priject/app/cache/prod/classes.php line 3597 [] []
我已经多次清除缓存:)
I have cleared the cache several times :)
有趣的是,在/app_dev.php 中,页面上的所有链接都不再链接到/app_dev.php.
Interesting is the fact that in /app_dev.php all links on the page no longer links to /app_dev.php.
包括配置文件(/_profiler/5fdc27cb82c4e9e426b3ab27377deb0b760fdca2)当我手动修改 url 并将 app_dev.php 添加到 url 时,分析器会正确加载.
including the profile (/_profiler/5fdc27cb82c4e9e426b3ab27377deb0b760fdca2) when i modify the url manually, and add the app_dev.php to the url, the profiler loads correctly.
routing_dev.yml:
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
如有任何帮助,我将不胜感激.
I would be grateful for any help.
更新一:config_dev.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
更新二:AppKernel.php
UPDATE II: AppKernel.php
use SymfonyComponentHttpKernelKernel;
use SymfonyComponentConfigLoaderLoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new SymfonyBundleFrameworkBundleFrameworkBundle(),
new SymfonyBundleSecurityBundleSecurityBundle(),
new SymfonyBundleTwigBundleTwigBundle(),
new SymfonyBundleMonologBundleMonologBundle(),
new SymfonyBundleSwiftmailerBundleSwiftmailerBundle(),
new SymfonyBundleAsseticBundleAsseticBundle(),
new DoctrineBundleDoctrineBundleDoctrineBundle(),
new SensioBundleFrameworkExtraBundleSensioFrameworkExtraBundle(),
new JMSAopBundleJMSAopBundle(),
new JMSDiExtraBundleJMSDiExtraBundle($this),
new JMSSecurityExtraBundleJMSSecurityExtraBundle(),
new myProjectMyBundlemyBundle(),
new FOSUserBundleFOSUserBundle(),
new myProjectMyBackendBundlemyBackendBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new SymfonyBundleWebProfilerBundleWebProfilerBundle();
$bundles[] = new SensioBundleDistributionBundleSensioDistributionBundle();
$bundles[] = new SensioBundleGeneratorBundleSensioGeneratorBundle();
}
return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
}
更新三:.htaccess
Update 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: I have found the error, it was a wrong (old) render tag in a template. :(
感谢您的支持
推荐答案
我也有这个问题,请注意你的 .htaccess 并使它看起来像这样:
I had this problem too, try to pay attention to your .htaccess and make it look like this:
<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>
这篇关于Symfony 2 - 加载 Web 调试工具栏时出错(404:未找到)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!