Symfony 4: произошла ошибка при загрузке панели инструментов веб-отладки

Работаю на 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 я вижу: GET 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.

Похоже, что компонент маршрутизации не работает.

Правила маршрутизатора (отладка: маршрутизатор):

-------------------------- -------- -------- ------ -------------------
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

Еще одна вещь, я запустил composer с пользователем root. И я использовал chown, чтобы сменить владельца моего проекта.

Вот часть моего файла .env:

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

Можете ли вы проверить, закрыли ли вы теги body и html?

user6830821 27.04.2018 11:56

Я вижу это снова и снова. Чтобы исправить это, я удаляю все под var\cache, а \var\session перезапускаю Apache, а затем снова прогреваю кеш или просто запускаю сайт и позволяю кешу восстановить. Занимает минутку дольше, но решает проблему

RiggsFolly 27.04.2018 11:57

Я не вносил никаких изменений в base.html.twig, поэтому с тегами все в порядке. Я забыл сказать, что я сделал контроллер по умолчанию и шаблон по умолчанию. Вот как я получил сообщение «Произошла ошибка при загрузке панели инструментов веб-отладки»

Yves 27.04.2018 12:00

Я столько раз очищал кеш ... Я тоже перезапустил Apache. Ничего нового.

Yves 27.04.2018 12:11

Проверьте свои правила маршрутизации в routing-dev.yml и посмотрите, есть ли у вас какие-либо правила для отладчика.

tftd 27.04.2018 12:20

Попробуйте запустить bin/console debug:event-dispatcher, чтобы проверить ошибки

Eugene Ruban 27.04.2018 12:57

Вы пробовали URL-адрес http://www.elora.dev/index.php/_wdt/? У меня была аналогичная проблема, потому что переписывание URL было неправильным.

A.L 27.04.2018 13:59

ПРЕКРАСНАЯ РАБОТА ! Думаю, это моя проблема. Работает url /index.php/lucky/number Спасибо!

Yves 27.04.2018 14:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
29
8
40 299
10

Ответы 10

Il звучит как проблема записи в кеш. Сбой панели инструментов профилировщика / отладки, поскольку данные отладки записываются в папку кеша. Ваше приложение, вероятно, нормально работает в среде prod.

Чтобы узнать, не в этом ли проблема, попробуйте запустить chmod -R 777 var/cache и повторите попытку.

«Лучшее исправление» зависит от вашей ОС. Не стесняйтесь добавлять дополнительную информацию, чтобы ответить точно, в противном случае вы можете взглянуть на относящуюся к Symfony документацию здесь (устаревшая ссылка намеренно, они удалили ее из документа SF4).

Спасибо за ответ, но я уже выполнил chmod 777 для var / cache, и setfacl ничего не изменил. Мое приложение работает в среде dev.

Yves 27.04.2018 13:39

Как я уже сказал, я заметил, что кеш для профилировщика находится в этом каталоге: var / cache / dev / profiler / 03/74 / и называется 177403, поэтому нет никаких проблем с записью в кеш.

Yves 27.04.2018 13:45

Поскольку ответ находится в комментарии, я повторяю его:

Вы пробовали URL http://www.elora.dev/index.php/_wdt/? У меня была аналогичная проблема, потому что переписывание URL было неправильным. - А.Л

Это оно !

  1. /index.php не имеет проблем с панелью инструментов отладки
  2. /index.php/lucky/number работает

Большое спасибо А.Л

Я думаю, это требует htaccess или mod_rewrite

composer require symfony/apache-pack

Спасибо, что это решило проблему для меня, когда я запускал приложение symfony в бродячем ящике для разработки.

Dennis de Best 20.07.2018 11:04

В моем случае я хотел работать с файлом .htaccess или без него, поэтому в итоге получил другую конфигурацию vhost, для получения дополнительной информации: ourcodeworld.com/articles/read/793/…

Carlos Delgado 14.08.2018 20:27

@DennisdeBest К сожалению, это не сработало при запуске приложения Symfony в усадьбе laravel: /

Pathros 13.11.2020 20:21

просто добавь :

FallbackResource /index.php

в настройках вашего каталога

    <Directory "/Library/WebServer/Documents/Your_public_symfony_directory">
            ....
            FallbackResource /index.php
            ....
    </Directory>

для получения дополнительной документации кликните сюда

Спасибо, это сработало с Laragon (Apache 2.4 + PHP 7.2).

Vladimir Hidalgo 21.07.2019 06:58
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>

Спасибо! Я забыл про apache-pack

Robert Saylor 04.04.2020 20:04

Иногда у вас может быть маршрут в ваших контроллерах, который перехватывает /_wdt/125121, примерно так:

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

Запросы для веб-панели инструментов debug будут здесь routed вместо правильного контроллера.

Используйте route requirements или исправьте свои маршруты.

У меня была такая же ошибка, и эти решения не помогли. В моем случае это была гораздо более простая проблема. Я обновил symfony с 4.2 до 4.3, но не другие пакеты (включая веб-профилировщик). Ой! Проверьте версию веб-профилировщика в composer.json.

Обновление Symfony с 4.2 до 4.3 привело к поломке Web Profiler

Если вы используете 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>

если вам нужна дополнительная информация, вы можете посетить здесь

Я сам работал над проектом Symfony 5. * и был новичком в фреймворке. Ваш ответ определенно помог.

ultrasounder 11.12.2020 00:30

У меня была ошибка:

Impossible to access an attribute ("nb_errors") on a string variable

Обновление до Symfony с 4.2 до 4.3 решило мою проблему

см. https://github.com/symfony/symfony/issues/32018

Как это связано с заданным вопросом? Похоже на совсем другую ошибку

Nico Haase 28.10.2020 14:58

ошибка, на которую я указал, после ее устранения ошибка «Произошла ошибка при загрузке панели инструментов веб-отладки» исчезла

Gautier 28.10.2020 15:02

В качестве небольшого дополнения к предыдущим ответам, если это происходит с кем-то в целом, когда панель инструментов действительно работала раньше:

это также может быть вызвано неудачным переименованием, которое можно было сделать небрежно с помощью заменить все.

В этом случае может быть даже достаточно просто выдать:

bin/console cache:clear

Тогда у вас, вероятно, тоже происходит что-то еще. Вы также проверили возможные причины из предыдущих ответов? Кроме того, вы можете захотеть как можно более «жестко» очистить ваш браузер от кеширования.

Wolfone 17.11.2020 08:32

Другие вопросы по теме