Symfony2 config.php troubles: Notice: Undefined 属性: stdClass::$vendor-dir, Vendor libraries are missing, 如何解决?

Symfony2 config.php troubles: Notice: Undefined property: stdClass::$vendor-dir, Vendor libraries are missing, how to resolve?

今天,过了一段时间,我决定创建一个新的 Symfony2 项目。我在 /usr/local/bin/composer 安装了 composer 并更新到最新版本:

$ composer self-update
You are already using composer version etc, etc...

然后我输入了通常的命令:

composer create-project symfony/framework-standard-edition path/to/htdocs/PDFMonitor 

一切顺利:

...
Clearing the cache for the dev environment with debug true
Trying to install assets as symbolic links.
Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
The assets were installed using symbolic links.
Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution
The assets were installed using symbolic links.

然后我打开浏览器并向 symfony 的 config.php 发出请求以确保实际上一切顺利,但我遇到了这个主要问题错误:

还有这个PHP通知和警告:

Notice: Undefined property: stdClass::$vendor-dir in /path/to/htdocs/PDFMonitor/app/SymfonyRequirements.php on line 751

Notice: Undefined property: stdClass::$vendor-dir in /path/to/htdocs/PDFMonitor/app/SymfonyRequirements.php on line 751

Warning: file_get_contents(/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php): failed to open stream: No such file or directory in /path/to/htdocs/PDFMonitor/app/SymfonyRequirements.php on line 546

我不知道为什么会这样。我有一段时间没有使用 Symfony,但我从来没有遇到过这样的问题。

我尝试了什么:

正如我所说,我以前从未遇到过这个问题。

我应该怎么做才能使symfony 再次正常工作?为什么 Symfony 看不到供应商?

我找到了解决问题的方法:这是 Symfony 2.6 中的一个错误,实际上 2.7 似乎已经修复了它。

如果有人仍然使用 composer create-project symfony/framework-standard-edition ... 创建项目,其中 Symfony2 版本默认为 2.6 并且遇到我遇到的相同问题,这里是一个解决方法:

编辑 YourProject/app/SymfonyRequirements.php 第 406 行

YourProject/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php 第 406 行 并替换:

 is_dir($this->getComposerVendorDir()),

有了这个:

is_dir(__DIR__.'/../vendor/composer'),

这将消除抱怨供应商的主要问题。然后这将改为删除 file_get_contents() Warning:

YourProject/app/SymfonyRequirements.php 内并使 行 546 看起来像这样:

file_get_contents(__FILE__) === file_get_contents(__DIR__.'/../vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php'),

然后打开 localhost/YourProject/web/config.php,您将再次看到漂亮的 Symfony 欢迎页面。