сегодня, спустя некоторое время, я решил создать новый проект Symfony2. У меня установлен композитор на /usr/local/bin/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’s 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, но у меня никогда не было такой проблемы.
Что я пробовал:
composer install
а также composer update
внутри корня проекта. Не помоглоПереустановите композитор curl -s https://getcomposer/installer | php
а потом:
$ mv composer.phar / usr / local / bin
$ rm -R / path / to / htdocs / PDFMonitor`
и опять:
$ composer create-project symfony / путь к фреймворку-стандартной-версии / к / htdocs / PDFMonitor
Снова проект создан но открывается http://localhost/PDFMonitor/web/config.php
дал предыдущие ошибки.
Как я уже говорил, я никогда не сталкивался с этой проблемой раньше.
Что я должен сделать, чтобы заставить 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()
Предупреждение:
внутри 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.
Других решений пока нет …