php - Symfony 运行提示 kernel.secret 参数未找到

标签 php symfony

错误信息: 服务“uri_signer”依赖于不存在的参数 “内核 secret ”。您的意思是:“kernel.charset”吗?

index.php 详细信息是:

<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;
use App\Kernel;

require './vendor/autoload.php';

// 开启调试
Debug::enable();

// 实例化请求
$request = Request::createFromGlobals();

// 实例化内核
$kernel = new Kernel('dev', true);

$response = $kernel->handle($request);

$response->send();

$kernel->terminate($request, $response);

app/Kernel.php 详细信息是:

<?php
namespace App;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;

class Kernel extends BaseKernel{

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
//        $confDir = $this->getProjectDir() . "/config";

//        $loader->load($confDir . "/app.php");
//        $this->set
    }

    public function registerBundles()
    {
        $contents = [
            \Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
        ];

        foreach ($contents as $class => $envs) {
            if (isset($envs["all"]) || isset($envs[$this->environment])) {
                yield new $class();
            }
        }
    }

    protected function configureContainer(ContainerBuilder $container) {
        // code invalid
        $container->setParameter("kernel.secret", "abck");
    }
}

composer.json 详细信息是:

{
    "require": {
        "php": "^7.2.0",
        "symfony/http-foundation": "^4.1",
        "symfony/http-kernel": "^4.1",
        "symfony/config": "^4.1",
        "symfony/dependency-injection": "^4.1",
        "symfony/framework-bundle": "^4.1"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

下次运行,显示:

click to show image

我用symonfy组件一一安装然后运行,发现提示找不到kernel.secret。谷歌了半天也没找到解决办法,网上的答案是解决symfony现有的框架。我希望告诉我如何解决这个问题。谢谢

最佳答案

出现此错误有一个新原因:

framework.secret 过去MicroKernelTrait 中设置。

看看提交 [FrameworkBundle] Remove reference to APP_SECRET in MicroKernelTrait其中这一行已被删除:

$container->loadFromExtension('framework', [
   'secret' => '%env(APP_SECRET)%'   //      <== removed
   ...

解决方案:

自行设置配置:

# config/packages/framework.yaml

framework:
    secret: '%env(APP_SECRET)%'

关于php - Symfony 运行提示 kernel.secret 参数未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341212/

相关文章:

php - Symfony2 BootstrapBundle : There is no "less" filter

javascript - 检测 Web 应用程序中同一 session 的多个选项卡或窗口

php - 脚本删除关键字后的文本

php - 将 'choice' 选项添加到 'entity' 类型表单字段会使表单无效 -- Symfony2

php - 使用 YAML 的 Symfony2 Doctrine 索引

symfony - 将许可证文件放在 Symfony 应用程序中的什么位置?

symfony - PHPUnit 代码覆盖率不起作用并且总是说白名单配置不正确

javascript - 由于 URL 意外,我收到 400 错误

php - 域名的 Laravel 验证规则

java - 创建一个查找并匹配用户输入的网页爬虫