Ошибка Symfony 2.6 после использования composer: & quot; библиотеки поставщика должны быть установлены & quot;

После создания или обновления проекта Symfony 2.6.1 с помощью composer я получаю «Библиотека поставщика должна быть установлена» ошибка и предлагает запустить php composer.phar install установить их.

Точные шаги, которые я предпринимаю:

composer create-project symfony/framework-standard-edition my_new_project/
cd my_new_project

Это, кажется, работает без каких-либо проблем, и, насколько я могу судить, загружает все необходимые пакеты поставщиков. Однако, если я тогда бегу:

php app/check.php

Это приводит к: —

* Библиотеки поставщика должны быть установлены
  > Библиотеки поставщиков отсутствуют. Установите композитор после
  > инструкции от http://getcomposer.org/. Затем запустите «PHP
  > composer.phar установить «, чтобы установить их.

Я пробовал бегать composer update, composer install, удаляя кэш компоновщика, но ничего, что я до сих пор пробовал, исправляет эту ошибку.

При тестировании многочисленных версий Symfony я получаю эту ошибку со всеми версиями Symfony> = 2.5.0. Любой проект, который я создаю таким же образом, используя Symfony <= 2.4.8 работает просто отлично.

Я использую PHP 5.6.4 (установленный через MacPorts) на OS X.

Я немного новичок, когда дело доходит до композитора, поэтому любая помощь будет высоко ценится!

5

Решение

Эта проблема здесь:

/**
* 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) возвращает true, что приводит к приведенному выше утверждению. Однако, когда вы смотрите на сгенерированный composer.json:

"config": {
"bin-dir": "bin"},

vendor-dir пропал, отсутствует. Генерация уведомления:

PHP Notice:  Undefined property: stdClass::$vendor-dir

Поэтому функция возвращает ноль, поэтому это требование не выполняется:

$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.'
);

В вашем проекте нет ничего плохого, это просто ошибка в стандартной версии. Пока вы правильно загружаете классы, у вас все в порядке.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]