今天,过了一段时间,我决定创建一个新的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的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 / framework-standard-edition path / to / htdocs / PDFMonitor
同样创建了项目,但是打开http://localhost/PDFMonitor/web/config.php
给出了之前的错误。
正如我所说,我之前从未遇到过这个问题。
为了让symfony再次正常工作,我该怎么做?为什么Symfony没有看到供应商?
答案 0 :(得分:2)
我找到了问题的解决方案:这是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欢迎页面。