【问题标题】:RuntimeException vendor does not exist and could not be createdRuntimeException 供应商不存在且无法创建
【发布时间】:2014-04-18 20:36:53
【问题描述】:

我尝试过在网上找到的其他帖子,但似乎没有一个可以正常工作。我正在使用this。我找到了它的根源,即/var/www/。然后我做composer install,我在那里有一个composer.json 文件。我明白了

[RuntimeException]                               
vendor does not exist and could not be created.

这是文件

{
    "name": "panique/php-login",
    "type": "project",
    "description": "A PHP login system embedded in a simple MVC framework",
    "keywords": ["login", "auth", "user", "authentification", "mvc"],
    "homepage": "https://github.com/panique/php-login",
    "license": "MIT",
    "authors": [
        {
            "name": "Panique",
            "homepage": "http://careers.stackoverflow.com/panique",
            "role": "Developer"
        }
    ],
    "support": {
        "issues": "https://github.com/panique/php-login/issues",
        "source": "https://github.com/panique/php-login"
    },
    "require":{
        "php": ">=5.3.7",
        "ircmaxell/password-compat": "1.0.*",
        "phpmailer/phpmailer": "5.2.*",
        "gregwar/captcha": "dev-master",
        "facebook/php-sdk": "@stable",
        "raveren/kint": "dev-1.0.0-wip"
    }
}

我真的不知道从这里去哪里......

【问题讨论】:

    标签: php json vagrant composer-php


    【解决方案1】:

    Google 员工,不要将 composer 与 sudo 一起使用:

    将您的用户添加到 www-data 组(此操作需要您注销并重新登录)

    sudo usermod -a -G www-data `whoami`
    

    授予 /var/www 正确的权限

    sudo chown root:root /var/www
    sudo chmod 755 /var/www/
    

    将这些权限授予您的项目

    sudo chown -R www-data:www-data /var/www/<project>
    sudo chmod -R 774 /var/www/<project>
    

    【讨论】:

    • 这个问题是正确的原因:a)您允许第三方脚本以 ROOT 身​​份执行...很大的安全风险! b)您的 ssh 密钥将不再可用(无法从 github/bitbucket 拉取)c)您将永远将内容返回到 www-datausername(如 /home/user/.composer 文件)
    • 当我从主机添加这些权限时,我得到这个错误:OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "chdir to cwd (\"/var/www/project\") set in config.json failed: permission denied": unknown 知道我为什么会得到这个吗?
    • 运行sudo chown root:root /var/www,我得到chown: cannot access '/var/www': No such file or directory
    【解决方案2】:

    @Etienne Gautier 的解决方案肯定会奏效。

    另一种解决方案就是更改/vendor的用户/组的权限。

    例如

    sudo chmod -R 775  /ROOT_OF_YOUR_APP/vendor/
    sudo chown -R $USER:$USER /ROOT_OF_YOUR_APP/vendor/
    

    【讨论】:

    • 非常有用的答案,但在此之前首先在您的项目文件夹中创建一个供应商文件夹
    【解决方案3】:

    如果你是 linux 用户,请运行以下命令

    sudo chown -R user projectFolder/
    

    然后运行作曲家安装。 user 是您机器的用户名。如果您不确定,请运行

    whoami
    

    从终端

    【讨论】:

      【解决方案4】:

      我能够通过删除供应商文件夹然后使用composer update 重新安装来解决此类问题。希望这对像我这样的人有所帮助。

      【讨论】:

        【解决方案5】:

        我在更新我的包裹时也遇到了这个问题。它对我不起作用的原因是这个“待创建”文件夹已经存在并且必须在完成此作曲家更新之前删除。

        【讨论】:

          【解决方案6】:

          在您的 laravel 应用程序中手动创建供应商文件夹 sudo mkdir vendor 并授予 777 权限 sudo chmod 777 vendor/ 然后返回您的应用程序位置并运行作曲家更新。

          然后,可能会再次出现引导/缓存权限,以递归方式授予 777 权限以缓存文件夹 sudo chmod -R 777 cache/ 然后返回您的应用位置并运行 composer update。

          确保您已在 laravel 应用中设置 .env 文件。

          那你可以走了:)

          【讨论】:

            【解决方案7】:

            同样的事情发生在我身上,似乎是权限问题,你有两个选择:

            1. 为您提供上述Etienne Gautier's 答案中提到的用户权限或
            2. 使用您的 root 用户登录

            【讨论】:

              【解决方案8】:

              发生这种情况是因为我们没有管理员权限,我们只需要输入 sudo 这个词,它看起来像这样:sudo composer install

              【讨论】:

              • 必须说作曲家必须以root身份运行多少次?
              【解决方案9】:

              试试这个对我有用。

              sudo composer update
              

              【讨论】:

              • Composer 不应以 root 身份运行,因为脚本和插件在您的系统上也将具有 root 访问权限。它将与您的答案中的解决方案一起使用,但这样做存在安全风险。
              猜你喜欢
              • 1970-01-01
              • 2016-09-12
              • 2017-10-09
              • 1970-01-01
              • 2023-03-10
              • 2015-08-12
              • 1970-01-01
              • 1970-01-01
              • 2013-05-31
              相关资源
              最近更新 更多