【问题标题】:Symfony self-update failingSymfony 自我更新失败
【发布时间】:2019-07-19 14:04:54
【问题描述】:

当我执行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(然后如上所述更新失败)。命令行截图:这会是什么问题?

【问题讨论】:

  • 如果系统无法将文件移动到不同的磁盘驱动器...如果您先将文件移动到同一个磁盘(手动(甚至在控制台中)),则可以解决它:O 这是完整的输出?
  • 这就是所有的输出。为什么会发生这种情况?即使symfony.exe不在驱动器C:上,它不应该能够更新系统吗?
  • 不确定,只是提示,但 php 可能无法访问磁盘...本地环境?
  • 你知道我该如何检验这个理论吗? :)
  • 我跑了php -i,环境中的homedrive是C:,但是session数据存放在D:。我是否可以假设这意味着它确实可以访问两者?

标签: symfony symfony4


【解决方案1】:

首先,您将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: \服务器\Symfony)。在运行时,它会将配置和其他文件存储在您的 Windows 用户帐户文件夹 (C:\Users\FairyWilbury) 中的“.symfony”目录中。在自我更新过程中,它会尝试移动原始 symfony.exe 文件。由于某种未知的原因,它不能在不同的驱动器之间执行此操作,即使在具有管理员权限的命令行窗口中也是如此。

奇怪的是,我找到的唯一解决方案如下。

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

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

【讨论】:

  • 是的,这很好用,谢谢。我发现的唯一问题是当您在 C:/TEMP 文件夹中时,您必须运行该文件夹中的 symfony.exe。如果不是,它将使用全局 symfony 变量,问题将是相同的。像这样运行命令:.\symfony.exe self:update
【解决方案2】:

好吧,看,在这种情况下,我真的找不到任何关于 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.,所以...

【讨论】:

  • 我在原来的问题中添加了新的细节,因为我刚刚意识到没有 4.6 版,尽管我被提示更新。
【解决方案3】:

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

sudo symfony self-update

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多