Symfony self 更新失败

标签 symfony symfony4

当我执行 symfony self 更新 时出现以下错误 - 我该如何解决?

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.

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

最佳答案

首先,您混淆了 Symfony Local Web ServerSymfony PHP 框架。您可以使用 Web 服务器,它是一个单一的可执行命令行开发工具,来启动一个新的基于 Symfony 的项目或启动一个本地服务器,使您的 Web 应用程序在开发时可用于测试和调试。另一方面,框架是您构建 Web 应用程序的代码库。

当你运行时

symfony self-update

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

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

回到最初的问题,我也在为这个问题苦苦挣扎,问题是我们都使用 Windows 并将网络服务器 (symfony.exe) 安装到驱动器 D: 中的一个文件夹中(在你的情况下它是 D:\服务器\Symfony)。在运行时,它会将配置和其他文件存储在 Windows 用户帐户文件夹 (C:\Users\FairyWilbury) 的“.symfony”目录中。在 self 更新过程中,这是它试图移动原始 symfony.exe 文件的地方。由于某些未知原因,它不能在不同的驱动器之间执行此操作,即使是在具有管理员权限的命令行窗口中也是如此。

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

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

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

关于Symfony self 更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57114186/

相关文章:

forms - Symfony 4 处理 null DateType 表单字段

php - 从 s3 存储桶中删除文件

php - 使用 Swiftmailer 通过 Symfony2 命令从本地主机发送邮件

php - Twig:在循环内设置变量,在循环外使用它

php - Symfony 4 : how to safely 'join' migrations together?/删除第一个和最后一个之间的迁移?

php - 替换/装饰 `translation.reader`

symfony - 如何在 Symfony 4 中使用 datetimeNormalizer?

Symfony EasyAdminBundle : Filter entities in assotiation field

Symfony 4 调试生产环境

php - Symfony 5 缓存 :clear php. 关键: fatal error :允许的内存大小