作曲家安装无法删除文件



我正在尝试运行作曲家安装以更新生产服务器上的依赖项,但我继续收到以下错误(这恰好在Laravel Forge部署的服务器上)。

Loading composer repositories with package information
Installing dependencies from lock file
Package operations: 0 installs, 0 updates, 24 removals
  - Removing symfony/dom-crawler (v3.2.1)
[RuntimeException]
Could not delete /home/forge/website.com/vendor/symfony/dom-crawler/composer.json:

为什么会这样?我可以手动删除 forge 服务器上的整个供应商文件夹并重新部署所有依赖项而不会损害它吗?

问题可能是因为作曲家正在超时。因此,您可能需要增加作曲家的时间。

您可以采取以下措施来获得一些速度:

  1. 增加作曲家进程超时(默认为 300)(如果以下设置可以帮助您提高速度,但不会造成伤害,则不是真正需要的)
  2. 将 dist 设置为首选安装类型。
  3. 为 github 启用 https 协议,速度更快。

    ~/.composer/config.json
         {
          "config": {
                    "process-timeout":      600,
                    "preferred-install":    "dist",
                    "github-protocols":     ["https"]
                     }
                  }
    

如果之后仍然有问题,您还可以清除作曲家的缓存:

 rm -rf ~/.composer/cache

您也可以尝试更新 git。

类似的问题在 laracasts 中讨论过

这可能是权限问题。也许在某个时候您使用了sudo,而文件现在归root所有。如果您通常使用其他用户进行此操作,现在再次使用该用户,则当然无法删除这些文件。

所以试试

ls -l /home/forge/website.com/vendor/symfony/dom-crawler/composer.json

以查看哪个用户/组拥有该文件。还要检查该目录的权限;也许它不再可写了?

只需更新您的作曲家版本

composer self-update

这是因为权限问题,也许您使用了 sudo 进行作曲家更新或作曲家安装。跑:

sudo chown -R user:group projectfolder

或者只是拥有供应商文件夹

sudo chown -R user:group projectfolder/vendor

最新更新