t3d 从 v6.1.7 导入到 v12.4.10 时出现 Typo3 TypeError

问题描述 投票:0回答:1

我有一个使用 v6.1.7 的旧typo3 安装,现在我想导出侧树并将其导入到使用 v12.4.10 的新安装上。我刚刚将 filadmin 文件夹的所有内容移至新安装,然后导出侧树(我尝试了几乎所有设置组合),所有这些都运行良好,但是当尝试在新安装中导入文件时,我得到了

TypeError
TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(): Argument #1 ($path) must be of type string, null given, called in /var/www/typo/vendor/typo3/cms-impexp/Classes/ImportExport.php on line 819

然后是大约 50 个代码片段。第一个位于 /var/www/typo/vendor/typo3/cms-core/Classes/Utility/PathUtility.php 第 428 行:

     * Strip first part of a path, equal to the length of public web path including trailing slash
     *
     * @internal
     */
    public static function stripPathSitePrefix(string $path): string
    {
        return substr($path, strlen(Environment::getPublicPath() . '/'));
    }

(我现在不打算粘贴每一个。如果有人认为整个跟踪很重要,我可以提供 html 文件)

我还没有尝试很多东西,但我也不知道要尝试什么。在研究这个问题时,我没有找到任何与typo3类似错误的参考,而且我找到的唯一参考似乎都与不兼容的php版本有关(尽管与typo3无关),但在this页面的底部它说:一切都应该向后兼容,我几乎无法在 php v5.5 上运行typo3 v12...

import export typo3
1个回答
0
投票

唷,这确实是一个非常古老的垃圾场。基本上,TYPO3 Import/Export 是为了在同一版本中使用,它的目的不是提供可迁移的导入,特别是对于这些旧版本。

幸运的是,格式本身没有发生太大变化,但底层数据结构发生了变化。特别是在文件管理和文件参考内部。

目前“困扰你”的是存在无法正确读取的文件关系,并抛出该错误。

虽然可以通过绕过类型检查来修复特定错误,但在此过程中您可能会遇到更多问题。

如果您可以忽略并且不导出任何旧图像,并且最好在导入后重新分配图像,那将是最简单的。是的,这是工作。但它可能不会自动工作。您需要为此编写自己的 FAL 导入程序,或者实际上,您必须将现有实例从 v6 迁移到 7、8、9、10、11,然后是 12,而不是从 v6 跳转到 v12。这是唯一有保证的保留所有数据的方式。

话虽如此;如果您替换所有出现的内容,则可以修复手头的错误:

PathUtility::stripPathsitePrefix($somevariable)

PathUtility::stripPathsitePrefix((string)$somevariable ?? '')

确保至少有一个空字符串传递给该方法。

我针对 12.4.10 做了一个简单的补丁:

https://gist.github.com/garvinhicking/f95e94784a78db16100331e613ae72b0

这是针对旧版安装完成的,如果您使用 Composer,则需要调整补丁以使用“./vendor/cms-impexp/...”作为补丁基础,而不是“./typo3/sysext/impexp” ”。但它可能会给你一个线索。

希望这会有所帮助,但我想管理/抑制您的期望 - 这种网站迁移会带来很多痛苦。这就像尝试通过复制 .exe 文件将 Windows98 应用程序导入到 Windows 11 中一样。

© www.soinside.com 2019 - 2024. All rights reserved.