Symfony自我更新失败

时间:2019-07-19 14:04:54

标签: symfony symfony4

当我symfony self-update出现以下错误时,该如何解决?

Backup failed, rename D:\SERVER\Symfony\symfony.exe C:\Users\FairyWilbury\.symfo
ny\autoupdate\2019-07-19_14-57-14-79024bb-old: The system cannot move the file t
o a different disk drive.. Canceling upgrade.

UPD。 我刚刚意识到,最新的symfony版本似乎是4.3和4.4,该版本将于11月发布https://symfony.com/roadmap/4.4 但是,每当我运行symfony new --full %projectName%时,它都建议我应更新为4.6(然后如上所述无法更新)。命令行屏幕截图:s 这个问题可能是什么?

3 个答案:

答案 0 :(得分:6)

首先,您要混合使用 Symfony本地Web服务器 Symfony PHP框架。您可以使用Web服务器(这是一个可执行的命令行开发人员工具)来启动基于Symfony的新项目,或者启动本地服务器,以便在开发Web应用程序时对其进行测试和调试。另一方面,该框架是您在其上构建Web应用程序的代码库。

跑步时

symfony self-update

从命令行中,您(尝试)更新Web服务器,而不是框架。

在撰写本文时,Web服务器的最新版本为4.12.10,而框架为5.0.5(或4.4.5),因此,如您所见,它们完全独立于彼此。

回到最初的问题,我也为此感到困惑,发现我们都使用Windows,并将Web服务器(symfony.exe)安装到驱动器D:中的文件夹中(在您的情况下为D: \ SERVER \ Symfony)。在运行时,它将配置文件和其他文件存储在Windows用户帐户(C:\ Users \ FairyWilbury)文件夹中的“ .symfony”目录中。在自我更新过程中,它将尝试移动原始symfony.exe文件。由于某些未知原因,即使在管理员特权的命令行窗口中,它也无法在不同的驱动器之间执行此操作。

很奇怪,我发现的唯一解决方法是以下方法。

  1. 我在驱动器C上创建了一个TEMP文件夹:
  2. 从驱动器D:上的文件夹中将symfony.exe复制到C:\ TEMP
  3. 打开命令行,并将当前目录切换到C:\ TEMP
  4. symfony self-update-这次进展顺利
  5. 关闭命令行窗口
  6. 将新的symfony.exe文件从C:\ TEMP移动到驱动器D上的文件夹:
  7. 已删除C:\ TEMP文件夹

我知道这有点麻烦,但是我们必须考虑Windows并不是PHP应用程序最流行的开发平台。 ;)

答案 1 :(得分:0)

好吧,在这种情况下,我真的没有发现任何关于symfony self-update的东西,所以...

在版本标题的第三部分(即4.6.1中的1)是一个补丁程序,其中仅包含错误修复程序,因此您首先需要最新的次要版本4.6.0

基本上,您需要遵循以下文档: symfony/doc/upgrade_patch.html

并且,从上面开始,首先,您需要(认真)遵循此文档: symfony/doc/4.2/upgrade_minor.html

此upgrade_minor.html写道:The composer.json file is configured to allow Symfony packages to be upgraded to patch versions.,所以...

答案 2 :(得分:0)

这个命令帮助我更新了 symfony 二进制文件:

sudo symfony self-update