Composer 安装无法删除文件

use*_*644 4 laravel composer-php laravel-forge

我正在尝试运行 Composer 安装来更新生产服务器上的依赖项,但我仍然收到以下错误(这恰好发生在 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:
Run Code Online (Sandbox Code Playgroud)

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

Gay*_*hne 5

问题可能是因为 Composer 超时了。所以你可能需要增加作曲家的时间。

您可以采取以下措施来提高速度:

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

    ~/.composer/config.json
         {
          "config": {
                    "process-timeout":      600,
                    "preferred-install":    "dist",
                    "github-protocols":     ["https"]
                     }
                  }
    
    Run Code Online (Sandbox Code Playgroud)

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

 rm -rf ~/.composer/cache
Run Code Online (Sandbox Code Playgroud)

您也可以尝试更新 git。

laracasts 中讨论了类似的问题

  • 好吧,最后,我做了一个“rm -rfvendor”并运行了“composer install”,这解决了我的问题。 (2认同)