Symfony 自我更新失败
Symfony self-update failing
当我执行 symfony self-update
时出现以下错误 - 我该如何解决?
Backup failed, rename D:\SERVER\Symfony\symfony.exe C:\Users\FairyWilbury\.symfo
ny\autoupdate19-07-19_14-57-14-79024bb-old: The system cannot move the file t
o a different disk drive.. Canceling upgrade.
更新。
我刚刚意识到最新的 symfony 版本似乎是 4.3,4.4 将于 11 月发布 https://symfony.com/roadmap/4.4
然而,每当我 运行 symfony new --full %projectName%
它建议我应该更新到 4.6(然后无法如上所述更新)。命令行截图:这个问题是什么?
好吧,看,在这种情况下,我真的找不到任何关于这个 symfony self-update
的东西,所以...
版本标题中的第三部分(即4.6.1中的1)是一个补丁,只包含bug修复,所以你首先需要最新的次要版本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.
,所以...
首先,您混淆了 Symfony 本地 Web 服务器 和 Symfony PHP 框架。您可以使用 Web 服务器,它是一个单一的可执行命令行开发工具,来启动一个新的基于 Symfony 的项目或启动一个本地服务器,使您的 Web 应用程序在开发时可用于测试和调试。另一方面,框架是您构建 Web 应用程序的代码库。
当你运行
symfony self-update
从命令行,您(尝试)更新网络服务器,而不是框架。
在撰写本文时,Web 服务器的最新版本是 4.12.10,而框架是 5.0.5(或 4.4.5),因此,如您所见,它们完全相互独立。
回到最初的问题,我也为此苦苦挣扎,问题是我们都使用 Windows 并将网络服务器 (symfony.exe) 安装到驱动器 D 中的文件夹中: (在你的例子中是 D:\SERVER\Symfony)。在 运行ning 期间,它会将配置和其他文件存储在 Windows 用户帐户 (C:\Users\FairyWilbury) 文件夹中的“.symfony”目录中。在自我更新过程中,这是它尝试移动原始 symfony.exe 文件的地方。由于某些未知原因,它不能在不同的驱动器之间执行此操作,即使是在具有管理员权限的命令行 window 中也是如此。
奇怪的是,我找到的唯一解决方案如下。
- 我在驱动器 C:
上创建了一个 TEMP 文件夹
- 已从驱动器 D: 上的文件夹复制symfony.exe 到 C:\TEMP
- 打开命令行,将当前目录切换到C:\TEMP
- 运行
symfony self-update
-- 这次很顺利
- 关闭命令行window
- 将新的 symfony.exe 文件从 C:\TEMP 移动到驱动器 D:
上的文件夹
- 删除了 C:\TEMP 文件夹
我知道这有点麻烦,但我们必须考虑到 Windows 不是 PHP 应用程序最流行的开发平台。 ;)
此命令帮助我更新了 symfony
二进制文件:
sudo symfony self-update
当我执行 symfony self-update
时出现以下错误 - 我该如何解决?
Backup failed, rename D:\SERVER\Symfony\symfony.exe C:\Users\FairyWilbury\.symfo
ny\autoupdate19-07-19_14-57-14-79024bb-old: The system cannot move the file t
o a different disk drive.. Canceling upgrade.
更新。
我刚刚意识到最新的 symfony 版本似乎是 4.3,4.4 将于 11 月发布 https://symfony.com/roadmap/4.4
然而,每当我 运行 symfony new --full %projectName%
它建议我应该更新到 4.6(然后无法如上所述更新)。命令行截图:
好吧,看,在这种情况下,我真的找不到任何关于这个 symfony self-update
的东西,所以...
版本标题中的第三部分(即4.6.1中的1)是一个补丁,只包含bug修复,所以你首先需要最新的次要版本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.
,所以...
首先,您混淆了 Symfony 本地 Web 服务器 和 Symfony PHP 框架。您可以使用 Web 服务器,它是一个单一的可执行命令行开发工具,来启动一个新的基于 Symfony 的项目或启动一个本地服务器,使您的 Web 应用程序在开发时可用于测试和调试。另一方面,框架是您构建 Web 应用程序的代码库。
当你运行
symfony self-update
从命令行,您(尝试)更新网络服务器,而不是框架。
在撰写本文时,Web 服务器的最新版本是 4.12.10,而框架是 5.0.5(或 4.4.5),因此,如您所见,它们完全相互独立。
回到最初的问题,我也为此苦苦挣扎,问题是我们都使用 Windows 并将网络服务器 (symfony.exe) 安装到驱动器 D 中的文件夹中: (在你的例子中是 D:\SERVER\Symfony)。在 运行ning 期间,它会将配置和其他文件存储在 Windows 用户帐户 (C:\Users\FairyWilbury) 文件夹中的“.symfony”目录中。在自我更新过程中,这是它尝试移动原始 symfony.exe 文件的地方。由于某些未知原因,它不能在不同的驱动器之间执行此操作,即使是在具有管理员权限的命令行 window 中也是如此。
奇怪的是,我找到的唯一解决方案如下。
- 我在驱动器 C: 上创建了一个 TEMP 文件夹
- 已从驱动器 D: 上的文件夹复制symfony.exe 到 C:\TEMP
- 打开命令行,将当前目录切换到C:\TEMP
- 运行
symfony self-update
-- 这次很顺利 - 关闭命令行window
- 将新的 symfony.exe 文件从 C:\TEMP 移动到驱动器 D: 上的文件夹
- 删除了 C:\TEMP 文件夹
我知道这有点麻烦,但我们必须考虑到 Windows 不是 PHP 应用程序最流行的开发平台。 ;)
此命令帮助我更新了 symfony
二进制文件:
sudo symfony self-update