сегодня, спустя некоторое время, я решил создать новый проект 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.
Затем я открыл браузер и сделал запрос к config.php
symfony, чтобы убедиться, что на самом деле все было гладко, но я получил эту ошибку Major Problem:
И это уведомление и предупреждение 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 update
composer install
и composer update
внутри корня проекта. Не помогло. Переустановите композитор curl -s https://getcomposer/installer | php
curl -s https://getcomposer/installer | php
и затем:
$ mv composer.phar / usr / local / bin
$ rm -R / путь / to / htdocs / PDFMonitor`
и опять:
$ composer create-project symfony / framework-standard-edition путь / to / 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 и испытывает ту же проблему, с которой я столкнулся, вот обходной путь:
Либо отредактируйте строку 406 YourProject/app/SymfonyRequirements.php
и
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
и make строка 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.