Symfony HTTPKernel组件由于配置组件

时间:2019-05-09 14:43:41

标签: php symfony dependency-injection kernel config

当我尝试简单地使用HttpKernel组件时出现致命错误。

Fatal error: Class 'Symfony\Component\Config\FileLocator' not found in /.../vendor/symfony/http-kernel/Config/FileLocator.php on line 23

所有软件包都已通过composer 1.8.x安装 设置极简

PHP 5.6

symfony/dependency-injection          v3.4.27             Symfony DependencyInjection Component
symfony/event-dispatcher              v3.4.27             Symfony EventDispatcher Component
symfony/http-foundation               v3.4.27             Symfony HttpFoundation Component
symfony/http-kernel                   v3.4.27             Symfony HttpKernel Component
symfony/process                       v3.4.27             Symfony Process Component
symfony/yaml                          v3.4.27             Symfony Yaml Component

我不想安装所有symfony / symfony软件包。

事实是symfony / config是“ require-dev”依赖项,似乎未安装。 我通常理解的是,require-dev安装通常是在您仅运行composer install|update时安装的。 显然不是...

按照下面的代码

use Symfony\Component\HttpKernel\Kernel as SymfonyKernel;
use Symfony\Component\HttpKernel\Config\FileLocator;

class MyKernel extends SymfonyKernel {

  public function boot() {
    // ...
    $this->iamOnError();
    // ...
  }

  public function iamOnError() {
    // @see SymfonyKernel::getContainerLoader
    $locator = new FileLocator($this);
  }

}
use App\MyKernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;

$kernel = new MyKernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

我的解决方案是在composer.json根目录中添加“ symfony / config”。这很奇怪。

所以我的问题是为什么我遇到此错误(我知道未安装symfony / config),或者为什么symfony / config在composer.json中不是symfony / http-kernel组件的“要求”。 / p>

0 个答案:

没有答案