【问题标题】:Symfony 3.4 : enable debug toolbar in prod environnmentSymfony 3.4:在 prod 环境中启用调试工具栏
【发布时间】:2018-05-19 08:18:54
【问题描述】:

我正在使用 Symfony 3.4,当我托管我的项目时,我遇到了路由问题,所以我必须调试它,但是当我将 /app_dev.php 添加到我的域名时,我得到一个错误:

You are not allowed to access this file. Check app_dev.php for more information.

Symfony 是否会通过简单的配置阻止产品的调试工具?

我尝试了这个解决方案,但它对我不起作用:

https://stackoverflow.com/a/39289662/7041095

我已完成所有这些更改,但尚未启用工具栏:

app/AppKernel.php:

public function registerBundles()
    {
        $bundles = [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new AppBundle\AppBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new MyVendorFOSUserBundle\MyVendorFOSUserBundle(),
        ];

    +        $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
    +        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
    +        $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
    +
             if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
                 $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
                 $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();

app/config/config.yml:

 parameters:
     locale: en

+web_profiler:
+    toolbar: true

app/config/routing.yml:

+
+_wdt:
+    resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
+    prefix: /_wdt
+
+_profiler:
+    resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
+    prefix: /_profiler
+
+_errors:
+    resource: '@TwigBundle/Resources/config/routing/errors.xml'
+    prefix: /_error

web/app_dev.php:

//commenting this lines:
+
+// if (isset($_SERVER['HTTP_CLIENT_IP'])
+//     || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
+//     || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
+// ) {
+//     header('HTTP/1.0 403 Forbidden');
+//     exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
+// }

composer.json:

"require": {
    "php": ">=5.5.9",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "friendsofsymfony/user-bundle": "~2.0",
    "incenteev/composer-parameter-handler": "^2.0",
    "sensio/distribution-bundle": "^5.0.19",
    "sensio/framework-extra-bundle": "^5.0.0",
    "symfony/monolog-bundle": "^3.1.0",
    "symfony/polyfill-apcu": "^1.0",
    "symfony/swiftmailer-bundle": "^2.6.4",
    "symfony/symfony": "3.4.*",
    "twig/twig": "^1.0||^2.0",
+    "sensio/generator-bundle": "^3.0",
+    "symfony/phpunit-bridge": "^3.0"
},

1) 我死了 ($this->getEnvironement()); => 产品

2) 没有工具栏显示&当我尝试 mydomain/app_dev.php 时出现问题:

 ClassNotFoundException
Attempted to load class "SensioGeneratorBundle" from namespace "Sensio\Bundle\GeneratorBundle".
Did you forget a "use" statement for another namespace?

【问题讨论】:

    标签: symfony production-environment symfony-3.4


    【解决方案1】:

    如果您在生产环境中启用了分析器,如您的答案linking,则需要通过app_dev.php 运行应用程序,app.php 应该可以工作。确保在您的composer.json中,它们列在require 而不是requre-dev

    如果出于任何原因您必须在服务器上使用app_dev.php,那么您应该编辑该文件并更改其权限

    // This check prevents access to debug front controllers that are deployed by accident to production servers.
    // Feel free to remove this, extend it, or make something more sophisticated.
    if (isset($_SERVER['HTTP_CLIENT_IP'])
        || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
        || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
    ) {
        header('HTTP/1.0 403 Forbidden');
        exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
    }
    

    【讨论】:

    • 我已应用此更改,但尚未启用工具栏(我将更新放在问题中)
    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2014-07-29
    相关资源
    最近更新 更多