Dalam .env
file saya , saya telah menetapkan lingkungan aplikasi saya sebagai dev dan debug benar seperti:
APP_ENV=dev
APP_DEBUG=true
Dalam config/packages/dev/web_profiler.yaml
file saya, saya memiliki yang berikut ini:
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
Routing di dalam config/routes/dev/web_profiler.yaml
sepertinya baik-baik saja:
web_profiler_wdt:
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
prefix: /_wdt
web_profiler_profiler:
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
prefix: /_profiler
Jadi ketika saya menjalankan server dengan symfony server:start
semuanya baik-baik saja, tetapi profiler tidak muncul. Apakah saya melewatkan sesuatu yang mengaktifkan fitur itu di dalam Symfony?
Untuk memperjelas, halaman mengeluarkan halaman HTML yang tepat dengan konten yang sesuai. Tidak ada profiler yang muncul.
Templat ranting basis saya:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>{% block title %} {% endblock %}</title>
{{ encore_entry_script_tags('base') }}
<link rel="icon" type="image/x-icon" href="{{ asset('build/images/favicon.ico') }}" />
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,500|Playfair+Display:400,700&display=swap" rel="stylesheet">
{{ encore_entry_link_tags("base") }}
{% block stylesheet %}{% endblock %}
</head>
<body {% if app.request.get('_route') == 'home' %} class='homepage' {% endif %} >
<header>
<div id='top-navigation' class='padding-lg__left-md padding-lg__right-md padding-lg__top-sm padding-lg__bottom-sm row row__align-center row__justify-start'>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Mission</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Our Team</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Where the Money Goes</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__right-lg'>Community Leadership</span>
<span class='text-color__white text-size__small text-weight__bold'>Policies</span>
<span class='text-color__white text-size__small text-weight__bold margin-lg__left-auto icon-set'> <span class='icon size__small color__white margin-lg__right-xsm'>{{ source('@public_path'~asset('build/images/icons/feedback.svg')) }}</span>Submit Feedback</span>
</div>
<nav class="padding-lg__top-md padding-lg__bottom-md padding-lg__left-md padding-lg__right-md row row__align-center row__justify-start {% if app.request.get('_route') == 'home' %} homepage {% endif %}">
<div id='logo'>
<a href="{{ url('home') }}">
<img src="{{ asset('build/images/logo_placeholder.png') }}" alt="logo">
</a>
</div>
{% if app.request.get('_route') == 'creator-register' %}
{% else %}
{% if not is_granted('IS_AUTHENTICATED_FULLY') %}
<div class='margin-lg__left-auto'>
<a href="{{ url('login') }}">
<div class='icon-set'>
<span class='icon margin-lg__right-xsm'>
{{ source('@public_path'~asset('build/images/icons/user.svg')) }}
</span>
<span class='nav-item'>Login</span>
</div>
</a>
</div>
{% endif %}
{% endif %}
</nav>
</header>
{% if app.request.get('_route') != 'home' %} <div class='container is_top'> {% endif %}
{% block body %} {% endblock %}
{% if app.request.get('_route') != 'home' %} </div> {% endif %}
</body>
</html>
Firewall Security.yaml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path : logout
remember_me:
secret: '%kernel.secret%'
lifetime: 2592000 #<- 30 days in seconds - defaults to one year if you take this out!
Hasil pada php bin/console debug:router | grep _profiler
:
_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
Pengontrol beranda terakhir:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class HomepageController extends AbstractController{
/**
* @Route("/", name="home")
*/
public function output(){
return $this->render('homepage/home.html.twig',[
'title' => 'yo',
]);
}
}
?>
Menambahkan public / index.php:
<?php
use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;
require dirname(__DIR__).'/config/bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
umask(0000);
Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
bin/console debug:event-dispatcher kernel.response
mana dengan -128 prioritas harus adaWebDebugToolbarListener::onKernelResponse
. jika tidak, periksa config / bundles.php, yang seharusnya berisi WebProfilerBundle. ya.true
?WebDebugToolbarListener.php
. Pada baris 109 tambahkan ini sebelum pernyataan pengembalian:echo 'Mode: ', $this->mode, " XDebTok: ", $response->headers->has('X-Debug-Token'), " IsRedir: ", $response->isRedirection(); die();
dan laporkan pengembalian untuk itu.Jawaban:
Sangat sulit, jika bukan tidak mungkin, men-debug ini untuk Anda dari jarak jauh. Masalah yang pasti terkait dengan sesuatu yang spesifik di pengaturan lokal Anda, dan seseorang tanpa akses ke proyek Anda tidak akan memiliki kesempatan untuk melihat apa yang salah.
Beberapa saran pemecahan masalah umum dan khusus untuk situasi Anda:
1 Instal ulang paket profiler
Meskipun tidak biasa, instalasi bisa borked. Pastikan paket profiler Anda baik-baik saja.
Pertama-tama hapus (
composer remove profiler
), lalu pasang kembalicomposer require --dev profiler
:).Ke-2 Periksa konfigurasi
Gunakan perintah konsol Symfony untuk memverifikasi konfigurasi Anda.
Pertama untuk profiler bawaan:
Yang seharusnya mengembalikan sesuatu seperti ini:
Dan kemudian untuk bilah alat profiler:
Yang seharusnya mengembalikan sesuatu seperti:
Ke-3 Periksa wadahnya
Periksa bagaimana layanan Profiler akan dipakai:
Harapkan sesuatu seperti ini:
Dan kemudian untuk web_toolbar:
Untuk sesuatu seperti ini:
(Perhatikan
2
, yang mengaktifkan bilah alat).4 Periksa pengirim acara.
Bilah alat web debug disuntikkan selama
kernel.response
acara. Periksa apakah callback terhubung dengan benar:Yang akan mengembalikan sesuatu seperti ini:
Item pemberitahuan
#7
, yang merupakan kolektor Profiler (yang antara lain akan menyertakanX-Debug-Token
header dalam respons, yang nantinya akan diperiksa oleh Web Debug Toolbar, yang merupakan item#8
dalam daftar di atas.Jika salah satu dari pemeriksaan di atas gagal
Anda harus fokus pada bagian tertentu untuk mencari tahu mengapa itu gagal. Mungkin beberapa bundel lain mengganggu? Masalah dengan salah satu file konfigurasi?
Semuanya memeriksa
... tapi masih tidak berfungsi? Nah, itu aneh. Pastikan templat yang dikembalikan memiliki
</body>
tag, dan respons yang dikembalikan memilikitext/html
tipe konten. Tetapi jika semua hal di atas memeriksa ... itu akan berhasil.Dalam komentar Anda mengatakan bahwa
framework.profiler.collect
disetel ke false saat melakukan pemeriksaan ini.Setel ke true dengan mengubah
config/packages/dev/web_profiler.yaml
seperti ini:sumber
debug:config framework profiler
dikembalikancollect: false
framework.profiler.collect
begitu katanyatrue
.collect : true
jika saya ingat dengan benar? Apakah ini baru?