InvalidArgumentException composer安装symfony

时间:2014-01-10 11:46:32

标签: php symfony doctrine composer-php

我正在尝试使用以下命令从symfony文件安装composer.json 2.4.1:

php composer.phar install

我从包含composer.json文件的根目录运行此命令(var / www / projectname /)

正确安装了一些软件包。安装Doctrine包时,出现以下错误:

  

InvalidArgumentException $ from(/ var / www / projectname / bin / doctrine)and   $ to()必须是绝对路径。

这是我已经尝试过的:

  • 运行php composer.phar selfupdate(现在最新版本)
  • 运行php composer.phar update
  • 运行php composer.phar install

删除整个项目(包括composer.json)并使用composer.phar创建一个新的安装创建项目symfony / framework-standard-edition / var / www / [PROJECTNAME] 2.4。* --prefer-dist

一个问题:我使用虚拟框和Windows 7共享使用vagrant。我正在通过ssh运行命令。

在这里,您会找到错误报告http://pastebin.com/rFk4vfnL

这是php --version的输出:

PHP 5.3.10-1ubuntu3.9 with Suhosin-Patch (cli) (built: Dec 12 2013 04:27:25)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

3 个答案:

答案 0 :(得分:7)

请删除作曲家的缓存(~/.composer/cache/),然后重试。

此外:

  • 您使用的是最新版本吗? (composer.phar selfupdate
  • 您是否将作曲家作为对/var/www/projectname/内的所有内容具有写权限的用户运行?

<强>更新

Composer希望将doctrine脚本符号链接到您的bin目录中,并且看起来findShortestPath()在调用时没有收到正确的路径。我以前从未见过这种情况:(

如果我理解正确,你就会在Vagrant来宾的“同步文件夹”中运行作曲家:

  1. 你为什么要在访客上运行作曲家,而不是在主持人身上?
  2. 您可以尝试在客人的其他位置运行composer(安装项目)吗? (不在同步文件夹中)这样就可以排除它是否与Windows 7共享有关。
  3. <强>更新

    因此问题是在Windows 7主机上的同步文件夹中运行composer。下一步是获取作曲家的源并调试LibraryInstaller::installBinaries()方法。首先检查realpath($binPath) here是否未返回false或类似内容。

    但我不得不再问:你为什么这样做?通常会设置一个带有同步文件夹的Vagrant框,以便能够在主机上进行开发,并在guest虚拟机上运行它(模仿生产服务器)。所以通常一个人会在主持人身上运行作曲家,而不是客人......

答案 1 :(得分:0)

尝试将此install instruction与更多参数一起使用:

$ php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.4.1

答案 2 :(得分:0)

据我所知(基于@jasper的答案),编辑器创建符号链接到bin文件夹存在问题...这可能是由于文件系统不支持符号链接(主机的文件系统,这是然后与客人共享),一个很好的测试是尝试在Linux机器上运行vagrant并查看问题是否仍然存在。

我能想到解决这个问题的唯一方法是在guest虚拟机中全局安装依赖项(这有点违背了使用Vagrant的意义)。

请注意我没有要测试的Windows机器,但是在使用samba共享和NTFS / FAT32文件系统之前,符号链接问题已经让我失望。