通过 Composer 提取 silverstripe/upgrader 的 zip 文件时出错

Error extracting zip file of silverstripe/upgrader via Composer

我正在将 SilverStripe 3.6.5 的一个实例升级到 SS 4.x,并且我一直在按照建议安装 SilverStripe upgrader

但是 运行 composer global require silverstripe/upgrader 在我的 Windows 开发箱上产生了这个:

Using version ^1.4 for silverstripe/upgrader
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing silverstripe/upgrader (1.4.1): Downloading (100%)
    Failed to download silverstripe/upgrader from dist: There was an error extracting the ZIP file, it is either corrupted or using an invalid format.
    Now trying to download from source
  - Installing silverstripe/upgrader (1.4.1): Cloning 84226286c8 from cache

Installation failed, reverting ./composer.json to its original content.

我正在使用这个堆栈:

目前我在全局范围内没有 Composer 包。

我也尝试过(无济于事)卸载 Composer,清除所有缓存和文件夹,然后重新开始下载 Composer-Setup.exe 并在安装完成后立即重试 composer global require silverstripe/upgrader 在命令行上。结果与 silverstripe/upgrader 相同,即使所有其他包(我猜它的依赖项)都已下载并安装正常。例如,这是重新启动后命令行输出的摘录:

Changed current directory to C:/Users/Amenel/AppData/Roaming/Composer
Using version ^1.4 for silverstripe/upgrader
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 35 installs, 0 updates, 0 removals
  - Installing ocramius/package-versions (1.4.0): Downloading (100%)
  - Installing composer/ca-bundle (1.1.4): Downloading (100%)
  - Installing padraic/humbug_get_contents (1.1.2): Downloading (100%)
  - Installing padraic/phar-updater (v1.0.6): Downloading (100%)
  - Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)
  - Installing symfony/filesystem (v4.3.1): Downloading (100%)
...

当我对它执行网络搜索时,我似乎找不到与此特定错误相关的任何内容。

另外值得注意的是:当我指定silverstripe/upgrader的以前版本时也会报告此错误,例如1.3.0.

综上所述,我的问题是无法启动升级过程,因为通过 composer 安装升级程序失败。

我就是这样绕过这个问题的。

我的目标是 运行 升级程序。正如文档所说的那样,路径是在 Windows 上使用 Composer。但是通过 Composer 的路径似乎被阻止了。我问自己有什么选择。在虚拟机中重新安装整个堆栈是可能的,但很乏味。想了想,还是觉得没什么好看的。

我最终将 phar 文件下载到 D:\Programs\SilverStripe-upgrader,并将其重命名为 upgrade-code-1.4.1.phar。鉴于 D:\Programs 已经在我的 PATH envvar 中,我创建了一个包含以下内容的文件 D:\Programs\upgrade-code.bat

@ECHO OFF
php %~dp0\SilverStripe-upgrader\upgrade-code-1.4.1.phar %*

我还没有 运行 迁移,但是 upgrade-code help 工作正常。 HTH.