使用作曲家后的 Symfony 2.6 错误:"Vendor libraries must be installed"
Symfony 2.6 error after using composer: "Vendor libraries must be installed"
在使用 composer 创建或更新 Symfony 2.6.1 项目后,我收到 "Vendor libraries must be installed" 错误,它建议运行 php composer.phar install
来安装它们。
我正在采取的具体步骤:-
composer create-project symfony/framework-standard-edition my_new_project/
cd my_new_project
这似乎运行没有任何问题,据我所知,确实下载了所有必要的供应商包。但是,如果我然后运行:-
php app/check.php
这导致:-
* Vendor libraries must be installed
> Vendor libraries are missing. Install composer following
> instructions from http://getcomposer.org/. Then run "php
> composer.phar install" to install them.
我试过运行 composer update
、composer install
,删除作曲家缓存,但到目前为止我没有尝试解决这个错误。
通过测试多个版本的 Symfony,我在 Symfony >= 2.5.0 的所有版本中都遇到了这个错误。我使用 Symfony <= 2.4.8 以相同方式创建的任何项目都可以正常工作。
我在 OS X 上运行 PHP 5.6.4(通过 MacPorts 安装)。
在作曲方面我有点菜鸟,所以任何帮助将不胜感激!
这个问题在这里:
/**
* In some special setups, the vendor/ directory isn't located in the project's
* root directory. To make this command work for every case, read Composer's
* vendor/ directory location directly from composer.json file.
*
* @return string
*/
private function getComposerVendorDir()
{
$composerJson = json_decode(file_get_contents(__DIR__.'/../composer.json'));
if (isset($composerJson->config)) {
return $composerJson->config->{'vendor-dir'};
}
return __DIR__.'/../vendor/composer';
}
具体来说:
return $composerJson->config->{'vendor-dir'};
isset($composerJson->config)
returns 上的条件为真,这就导致了上面的说法。但是,当您查看生成的 composer.json:
"config": {
"bin-dir": "bin"
},
缺少 vendor-dir
。生成通知:
PHP Notice: Undefined property: stdClass::$vendor-dir
因此函数returns为空,所以这个要求不成立:
$this->addRequirement(
is_dir($this->getComposerVendorDir()), // <-- HERE
'Vendor libraries must be installed',
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
'Then run "<strong>php composer.phar install</strong>" to install them.'
);
这是 symfony/symfony-standard
上的错误。它可能已经在排队等待修复,但您也可以在 Github.
上提出它
编辑:
看起来他们已经有了,2.7使用:
$this->addRequirement(
is_dir(__DIR__.'/../vendor/composer'),
'Vendor libraries must be installed',
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
'Then run "<strong>php composer.phar install</strong>" to install them.'
);
你的项目没有问题,它只是标准版中的一个错误。只要您正确地自动加载 类 就没问题。
在使用 composer 创建或更新 Symfony 2.6.1 项目后,我收到 "Vendor libraries must be installed" 错误,它建议运行 php composer.phar install
来安装它们。
我正在采取的具体步骤:-
composer create-project symfony/framework-standard-edition my_new_project/
cd my_new_project
这似乎运行没有任何问题,据我所知,确实下载了所有必要的供应商包。但是,如果我然后运行:-
php app/check.php
这导致:-
* Vendor libraries must be installed
> Vendor libraries are missing. Install composer following
> instructions from http://getcomposer.org/. Then run "php
> composer.phar install" to install them.
我试过运行 composer update
、composer install
,删除作曲家缓存,但到目前为止我没有尝试解决这个错误。
通过测试多个版本的 Symfony,我在 Symfony >= 2.5.0 的所有版本中都遇到了这个错误。我使用 Symfony <= 2.4.8 以相同方式创建的任何项目都可以正常工作。
我在 OS X 上运行 PHP 5.6.4(通过 MacPorts 安装)。
在作曲方面我有点菜鸟,所以任何帮助将不胜感激!
这个问题在这里:
/**
* In some special setups, the vendor/ directory isn't located in the project's
* root directory. To make this command work for every case, read Composer's
* vendor/ directory location directly from composer.json file.
*
* @return string
*/
private function getComposerVendorDir()
{
$composerJson = json_decode(file_get_contents(__DIR__.'/../composer.json'));
if (isset($composerJson->config)) {
return $composerJson->config->{'vendor-dir'};
}
return __DIR__.'/../vendor/composer';
}
具体来说:
return $composerJson->config->{'vendor-dir'};
isset($composerJson->config)
returns 上的条件为真,这就导致了上面的说法。但是,当您查看生成的 composer.json:
"config": {
"bin-dir": "bin"
},
缺少 vendor-dir
。生成通知:
PHP Notice: Undefined property: stdClass::$vendor-dir
因此函数returns为空,所以这个要求不成立:
$this->addRequirement(
is_dir($this->getComposerVendorDir()), // <-- HERE
'Vendor libraries must be installed',
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
'Then run "<strong>php composer.phar install</strong>" to install them.'
);
这是 symfony/symfony-standard
上的错误。它可能已经在排队等待修复,但您也可以在 Github.
编辑:
看起来他们已经有了,2.7使用:
$this->addRequirement(
is_dir(__DIR__.'/../vendor/composer'),
'Vendor libraries must be installed',
'Vendor libraries are missing. Install composer following instructions from <a href="http://getcomposer.org/">http://getcomposer.org/</a>. '.
'Then run "<strong>php composer.phar install</strong>" to install them.'
);
你的项目没有问题,它只是标准版中的一个错误。只要您正确地自动加载 类 就没问题。