php Symfony 分析器抛出 404
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/31367192/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Symfony profiler throws 404
提问by Mati
I've created new project in symfony and I get an error prompt on each site:
我在 symfony 中创建了新项目,并且在每个站点上都收到错误提示:
An error occurred while loading the web debug toolbar (404: Not Found).
Do you want to open the profiler?
加载 Web 调试工具栏时出错(404:未找到)。
您要打开分析器吗?
When I open the profiler there is a message
当我打开分析器时,有一条消息
Token not found
Token "59942c" was not found in the database.
未找到
令牌 在数据库中未找到令牌“59942c”。
Moreover, in the cache directory the profiler directory is empty! I checked permissions and they're proper. I tried cache:clear
and removing cache manually, but that didn't help.
此外,在缓存目录中,分析器目录是空的!我检查了权限,它们是正确的。我尝试cache:clear
手动删除缓存,但这没有帮助。
回答by Jan Galtowski
It's often problem with event subscriber/listener. Try run
事件订阅者/侦听器通常有问题。尝试运行
console debug:event
And check for errors
并检查错误
回答by marenkay
This usually happens if the cache directory is not properly set up to allow the web servers' user to write data into them.
如果未正确设置缓存目录以允许 Web 服务器的用户将数据写入其中,则通常会发生这种情况。
Under Linux, I would usually use this for development:
在 Linux 下,我通常会使用它进行开发:
php app/console --env=dev cache:clear
php app/console --env=dev cache:warmup
chmod -R a+rwX app/cache/
setfacl -Rm g:www-data:rwX app/cache/
setfacl -Rm g:dev-user:rwX app/cache/
This ensures all required directories will be created and then assigned the required permissions. If you do not have ACL enabled, skip the setfacl
commands.
这确保将创建所有必需的目录,然后分配所需的权限。如果您没有启用 ACL,请跳过这些setfacl
命令。
OFC, replace www-data
with your web servers' username, and dev-user
with your username.
OFC,替换www-data
为您的 Web 服务器的用户名和dev-user
您的用户名。
回答by numediaweb
This is a known bugin the profiler. Since Symfony 2.4, the profiler persisting the data used by the WDT is the very last thing done by Symfony.
这是分析器中的一个已知错误。从 Symfony 2.4 开始,保存 WDT 使用的数据的分析器是 Symfony 所做的最后一件事。
The alert you see means that the profiler has not been able to find the token requested in the 2500ms allowed, However if you click OK in the alert, you should be redirected to the profiler and figure out what precisely is slow.
您看到的警报意味着探查器在允许的 2500 毫秒内无法找到请求的令牌,但是如果您在警报中单击“确定”,您应该被重定向到探查器并找出究竟是什么缓慢。
回答by user3442077
I had the same issue after upgrading Symfony 2.3->2.6. After upgrading web/app_dev.php
it fixed the issue. I believe you need the Debug::enable();
line.
升级 Symfony 2.3->2.6 后我遇到了同样的问题。升级后web/app_dev.php
问题解决。我相信你需要这Debug::enable();
条线。
回答by Ray Foss
Had the same issue after upgrading 2.6 -> 2.8 on a 2.4 era project. Got a useMicrosecondTimestamps
error with the node layer. Fixed by nuking rm -r app/cache/*
. @marenkay's method did not clear the node-php server cache.
在 2.4 时代的项目上升级 2.6 -> 2.8 后遇到了同样的问题。得到了useMicrosecondTimestamps
与节点层错误。通过 nuking 修复rm -r app/cache/*
。@marenkay 的方法没有清除 node-php 服务器缓存。
回答by Mookum
Try to edit or add your htacces file like this
尝试像这样编辑或添加您的 htacces 文件
# Use the front controller as index file. It serves as a fallback solution when
# every other rewrite/redirect fails (e.g. in an aliased environment without
# mod_rewrite). Additionally, this reduces the matching process for the
# start page (path "/") because otherwise Apache will apply the rewriting rules
# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
DirectoryIndex index.php
# By default, Apache does not evaluate symbolic links if you did not enable this
# feature in your server configuration. Uncomment the following line if you
# install assets as symlinks or if you experience problems related to symlinks
# when compiling LESS/Sass/CoffeScript assets.
# Options FollowSymlinks
# Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not
resolve
# to the front controller "/index.php" but be rewritten to "/index.php/index".
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# Determine the RewriteBase automatically and set it as environment variable.
# If you are using Apache aliases to do mass virtual hosting or installed the
# project in a subdirectory, the base path will be prepended to allow proper
# resolution of the index.php file and to redirect to the correct URI. It will
# work in environments without path prefix as well, providing a safe, one-size
# fits all solution. But as you do not need it in this case, you can comment
# the following 2 lines to eliminate the overhead.
RewriteCond %{REQUEST_URI}:: ^(/.+)/(.*)::$
RewriteRule ^(.*) - [E=BASE:%1]
# Sets the HTTP_AUTHORIZATION header removed by Apache
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect to URI without front controller to prevent duplicate content
# (with and without `/index.php`). Only do this redirect on the initial
# rewrite by Apache and not on subsequent cycles. Otherwise we would get an
# endless redirect loop (request -> rewrite to front controller ->
# redirect -> request -> ...).
# So in case you get a "too many redirects" error or you always get redirected
# to the start page because your Apache does not expose the REDIRECT_STATUS
# environment variable, you have 2 choices:
# - disable this feature by commenting the following 2 lines or
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
# following RewriteCond (best solution)
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/ [R=301,L]
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# Rewrite all other queries to the front controller.
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# When mod_rewrite is not available, we instruct a temporary redirect of
# the start page to the front controller explicitly so that the website
# and the generated links can still be used.
RedirectMatch 307 ^/$ /index.php/
# RedirectTemp cannot be used instead
</IfModule>
</IfModule>