Symfony 4:加载Web调试工具栏时发生错误

时间:2018-04-27 09:52:06

标签: php symfony

我在CentOS工作。

我已按照教程:

当我使用Apache时,我也跟着这个页面:

我制作了默认控制器和默认模板。使用此控制器(/),我得到以下错误(在调试工具栏中):

An error occurred while loading the web debug toolbar. Open the web profiler.

当我点击链接时:"打开网页探查器",我可以看到Apache响应:

Not Found
The requested URL /_profiler/177403 was not found on this server.

在Chrome检查员中,我可以看到: 获取http://172.31.18.7/_wdt/177403 404(未找到)

这是我的composer.json的有趣部分:

    "require": {
        "php": "^7.1.3",
        "ext-iconv": "*",
        "doctrine/doctrine-fixtures-bundle": "^3.0",
        "sensio/framework-extra-bundle": "^5.1",
        "sonata-project/admin-bundle": "^3.35",
        "sonata-project/doctrine-orm-admin-bundle": "^3.6",
        "symfony/apache-pack": "^1.0",
        "symfony/console": "^4.0",
        "symfony/flex": "^1.0",
        "symfony/framework-bundle": "^4.0",
        "symfony/lts": "^4@dev",
        "symfony/maker-bundle": "^1.4",
        "symfony/orm-pack": "^1.0",
        "symfony/requirements-checker": "^1.1",
        "symfony/security-bundle": "^4.0",
        "symfony/twig-bundle": "^4.0",
        "symfony/validator": "^4.0",
        "symfony/yaml": "^4.0"
    },
    "require-dev": {
        "sensiolabs/security-checker": "^4.1",
        "symfony/dotenv": "^4.0",
        "symfony/web-profiler-bundle": "^4.0"
    },

我的httpd.conf:

<VirtualHost *:80>
DocumentRoot /var/www/html/elora/public
ServerName eloradev
ServerAlias www.elora.dev
DirectoryIndex index.php

<Directory "elora/public">
    AllowOverride all
    Order Allow,Deny
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    Allow from localhost
</Directory>

<Directory elora>
    Options FollowSymlinks
</Directory>    

ErrorLog /var/apache/logs/error.log
CustomLog /var/apache/logs/access.log combined  

</VirtualHost>

我的.htaccess:

DirectoryIndex index.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]

    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 307 ^/$ /index.php/
    </IfModule>
</IfModule>

并且,为了完成,我的/ lucky / number(https://symfony.com/doc/current/page_creation.html)引发了apache消息:

Not Found
The requested URL /lucky/number was not found on this server.

看起来路由组件确实无效。

路由器规则(debug:router):

-------------------------- -------- -------- ------ -------------------
Name                       Method   Scheme   Host   Path
-------------------------- -------- -------- ------ ----------------------- 
  app_homepage               ANY      ANY      ANY    /
  app_lucky                  ANY      ANY      ANY    /lucky
  app_lucky_number           ANY      ANY      ANY    /lucky/number
  _twig_error_test           ANY      ANY      ANY    /_error/{code}.{_format}
  _wdt                       ANY      ANY      ANY    /_wdt/{token}
  _profiler_home             ANY      ANY      ANY    /_profiler/
  _profiler_search           ANY      ANY      ANY    /_profiler/search
  _profiler_search_bar       ANY      ANY      ANY    /_profiler/search_bar
  _profiler_phpinfo          ANY      ANY      ANY    /_profiler/phpinfo
  _profiler_search_results   ANY      ANY      ANY    /_profiler/{token}/search/results
  _profiler_open_file        ANY      ANY      ANY    /_profiler/open
  _profiler                  ANY      ANY      ANY    /_profiler/{token}
  _profiler_router           ANY      ANY      ANY    /_profiler/{token}/router
  _profiler_exception        ANY      ANY      ANY    /_profiler/{token}/exception
  _profiler_exception_css    ANY      ANY      ANY    /_profiler/{token}/exception.css
 -------------------------- -------- -------- ------ -----------------------

我手动创建了目录/ _wdt,以防万一,但确实没有改变任何内容。

我已经使用debug检查错误:event-dispatcher,没什么特别的。

我注意到探查器的缓存位于该目录中:var / cache / dev / profiler / 03/74 /并命名为177403

还有一件事,我和作曲家一起经营作曲家&#39;用户。我已经使用chown来改变我项目的所有者。

这是我文件的一部分.env:

###> symfony/framework-bundle ###
APP_ENV=dev

10 个答案:

答案 0 :(得分:35)

我认为这需要htaccess或mod_rewrite

composer require symfony/apache-pack

答案 1 :(得分:6)

由于回复是在评论中,我重复一遍:

您是否尝试过网址http://www.elora.dev/index.php/_wdt/?我有一个类似的问题,因为URL重写是错误的。 - A.L

那就是它!

  1. /index.php对调试工具栏没有任何问题
  2. /index.php/lucky/number有效
  3. 非常感谢A.L

答案 2 :(得分:4)

只需添加:

FallbackResource /index.php

在您的目录设置中

props.type

有关更多文档click here

答案 3 :(得分:3)

Il听起来像是一个缓存写入问题。探查器/调试工具栏崩溃,因为调试数据被写入缓存文件夹。您的应用程序可能在prod环境中正常运行。

要查看这是否是您的问题,请尝试运行chmod -R 777 var/cache,然后重试。

“更好的修复”取决于您的操作系统。您可以随意添加更多信息以准确回答,否则您可以查看Symfony相关文档here(有意过时的链接,他们将其从SF4文档中删除)。

答案 4 :(得分:3)

composer require symfony/apache-pack

Do you want to execute this recipe?
    [y] Yes
    [n] No
    [a] Yes for all packages, only for the current installation session
    [p] Yes permanently, never ask again for this project
    (defaults to n): y

主机文件:

127.0.0.1 symfony01.com
127.0.0.1 www.symfony01.com

httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName symfony01.com
    ServerAlias www.symfony01.com   
    DocumentRoot "c:/wamp64/www/symfony01/public"
    <Directory  "c:/wamp64/www/symfony01/public/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

答案 5 :(得分:1)

我有同样的错误,这些解决方案没有帮助。就我而言,这是一个简单得多的问题。我将symfony从4.2升级到4.3,但没有升级其他软件包(包括Web Profiler)。哎呀!在composer.json中检查Web事件探查器的版本。

Symfony update from 4.2 to 4.3 caused Web Profiler to break

答案 6 :(得分:1)

如果您正在使用symfony v5。 *
转到your_project_root > public创建一个名为.htaccess的新文件 只需粘贴代码:


DirectoryIndex index.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 307 ^/$ /index.php/
    </IfModule>
</IfModule>

如果您需要更多信息,可以访问here

答案 7 :(得分:0)

有时候,您的控制器中会有一条捕获/_wdt/125121的路由,如下所示:

@Route("/{_locale}/{courseSlug}", name="learning_course")

此处对网络debug工具栏的请求将是routed,而不是正确的控制器。

使用route requirements或修正路线。

答案 8 :(得分:0)

我遇到了错误:

无法访问字符串变量上的属性(“ nb_errors”)

将Symfony从4.2升级到4.3解决了我的问题

请参阅https://github.com/symfony/symfony/issues/32018

答案 9 :(得分:0)

如果以前在工具栏确实确实可以使用之前,通常发生在某人身上,则可以作为对先前答案的一小部分补充:

这也可能是由于不幸的重命名所致,因为人们可能通过全部替换草率地将其改了名。

在这种情况下,只需发出以下命令就足够了:

bin/console cache:clear