首页 文章

InvalidArgumentException composer安装symfony

提问于
浏览
6

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

php composer.phar install

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

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

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

这是我已经尝试过的:

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

  • 运行php composer.phar更新

  • 运行php composer.phar安装

删除整个项目(包括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 回答

  • 7

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

    也:

    • 您使用的是最新版本吗? ( composer.phar selfupdate

    • 您是否以对 /var/www/projectname/ 内部所有内容具有写权限的用户身份运行composer?

    update

    Composer希望将 doctrine 脚本符号链接到你的 bin 目录中,似乎 findShortestPath() 并没有看到过这种情况发生之前:(

    如果我理解正确,那么您将在Vagrant来宾中的“同步文件夹”中运行作曲家:

    • 为什么要在guest虚拟机上运行composer,而不是在主机上运行?

    • 你可以尝试在客人的其他地方运行composer(安装你的项目)吗? (不在同步文件夹中)这样你可以排除它是否与Windows 7共享有关 .

    update

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

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

  • 0

    尝试将此install instruction用于更多参数:

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

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

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

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

相关问题