我有一个已经启动的Symfony2项目。我需要安装一个新的捆绑包,正如我所看到的,我需要在composer.json中添加一行新行,然后执行update命令。
问题是,我的composer.phar文件和.json在不同的文件夹中。
/httpdocs/composer.json
/bin/composer.phar
因此,在我将这一行添加到.json文件之后:
"doctrine/mongodb-odm-bundle": "3.0.*@dev"
如果我尝试/bin/php composer.phar update doctrine/mongodb-odm-bundle
,我会得到一个错误,说composer.json不存在,当然是正确的。所以我怀疑为什么这些文件在不同的文件夹中?以前的开发人员犯了错误吗?我应该把文件移到同一个文件夹吗?到bin
还是httpdocs
?
composer.phar
住在哪里并不重要。相关部分,即您的当前工作目录位于symfony项目中(composer.json
所在的位置(。然后是简单的execute composer(如果设置了execute位,则不需要调用php(。
/bin/composer.phar update doctrine/mongodb-odm-bundle
您可以有一个全局composer.phar,并且只使用这个。这就是你通常在开发机器上拥有多个composer项目的方式。
有些人倾向于将composer.phar放入他们的项目中,这样他们就可以将其与应用程序一起部署。
composer抱怨缺少composer的解决方案。json:
您必须将工作目录更改为要使用的composer.json所在的路径。(每个composer项目都有自己的composer.json(
这意味着cd进入您的项目目录。。。
cd /path/to/yourproject
在执行之前
/bin/composer.phar update ...
替代方案:
您可以使用--working dir选项为composer指定一个工作目录。通过这种方式,您可以从任何当前工作目录将composer指向您的项目(即使您的项目的路径与cwd所在的位置不同(。示例用法:
composer --working-dir=/path/to/yourproject <command>
提示#1
将/bin/composer.phar重命名为/bin/compose
mv /bin/composer.phar /bin/composer
chmod +x /bin/composer
然后您可以简单地(假设/bin在您的PATH中(。。。
composer <command>
提示#2
您可以使用pwd(*p*rint*w*工作*1d**目录(检查您当前的位置
pwd