【问题标题】:Symfony project cloned with git vendors not installed未安装 git 供应商克隆的 Symfony 项目
【发布时间】:2015-04-11 15:03:45
【问题描述】:

我在一个 Fedora 客户机上开始了我的 symfony 项目,并愉快地编写了几次代码。然后,感谢 koding.com,我将文件导出到亚马逊 EC2 虚拟机并在那里编码了一段时间(很方便)。我终于希望能够在任何环境中编码,所以我设置了 git 并将我的所有文件都放在那里。

昨天,我将我的存储库从 github 克隆到我的 Fedora 客户机并尝试启动它。它不适用于某些未安装的供应商库。

我已经阅读了文档,这很正常,在克隆存储库后,必须进行 php composer.phar 安装。

我已经尝试过,但我收到一条错误消息,因为供应商库是在我的 AppKernel 中声明的

php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Updating the "app/config/parameters.yml" file
PHP Fatal error:  Class 'FOS\UserBundle\FOSUserBundle' not found in /home/eagle1/www/ICORECO/app/AppKernel.php on line 29

所以我尝试评论这些行,但显然我得到了扩展这些类的代码,所以 composer install 再次生成错误

php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Updating the "app/config/parameters.yml" file                                                                                          [LogicException]                                                                              
  Bundle "NRtworksSubscriptionBundle" extends bundle "FOSUserBundle", which is not registered.  

我能做什么?

这是我的 .gitignore

# Cache and logs (Symfony2)
/app/cache/*
/app/logs/*
!app/cache/.gitkeep
!app/logs/.gitkeep
# Cache and logs (Symfony3)
/var/cache/*
/var/logs/*
!var/cache/.gitkeep
!var/logs/.gitkeep
# Parameters
/app/config/parameters.yml
/app/config/parameters.ini
# Managed by Composer
/app/bootstrap.php.cache
/var/bootstrap.php.cache
/bin/*
!bin/console
!bin/symfony_requirements
/vendor/
# Assets and user uploads
/web/bundles/
/web/uploads/
# PHPUnit
/app/phpunit.xml
/phpunit.xml
# Build data
/build/
# Composer PHAR

【问题讨论】:

  • 你有你的composer.lock 文件吗?你有没有尝试过做composer update
  • 是的,我有一个 composer.lock 和 composer update 只是做同样的结果
  • 你确定你在 composer.json 中注册了 FOSUserBundle 吗?也许cache:clear 会有所帮助
  • 我删除了这一行并做了 "php composer.phar require friendsofsymfony/user-bundle "~2.0@dev"" 它给了我与我的问题完全相同的错误
  • @Eagle1,一般来说,vendor/ 应该被版本化。尝试删除目录,然后运行composer install。如果这能解决问题,我会为你写一个正确的答案。

标签: git symfony composer-php


【解决方案1】:

听起来您的vendor/ 目录处于不一致状态。

一般来说,作曲家recommends not versioning vendor/。您的 composer.json and composer.lock files should both be committed 和 Composer 可以从这些文件中构建 vendor/

我建议删除 vendor/ 并再次运行 composer install 以从头开始重建它。假设composer.jsoncomposer.lock 是正确的,这应该可以让你回到工作状态。

然后确保您忽略vendor/,例如用一行如

vendor/

在您的.gitignore 中,并删除任何可能意外提交到存储库的供应商文件:

git rm --cached -r vendor

【讨论】:

  • 确实是问题所在。似乎即使是一个空文件夹也足以让作曲家将依赖项视为已安装
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 2021-06-29
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
相关资源
最近更新 更多